Имам проблем да обвържа списък с DataGrid. Трябва да е възможно най-просто. Аз съм нов в WPF и това е за моето лично обучение.
Имам клас View(Editor),ViewModel(VMText) и Data(JustText).
Моят източник досега:
JustText.cs
namespace Model
{
public class Text
{
private string _code;
public string Code
{
get { return _code; }
set { _code = value; }
}
public Text()
{
_code = "Hello World!\nHow you doin'?";
}
}
}
VMText.cs
namespace ViewModel
{
public class VMText
{
private Model.Text _code;
public List<string> Code
{
get { return new List<string>(_code.Code.Split('\n')); }
set { _code.Code = System.String.Join("\n", value.ToArray()); }
}
private View.Editor editor;
public VMText(View.Editor editor)
{
_code = new Model.Text();
this.editor = editor;
}
}
}
Editor.xaml
<Window x:Class="View.Editor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:View"
mc:Ignorable="d"
Title="Editor" Height="240.024" Width="269.895">
<Grid Background="#FF292929" Margin="0,0,-6.8,0.4">
<DataGrid x:Name="dataGrid"
HorizontalAlignment="Left"
Margin="0,0,0,0"
VerticalAlignment="Top"
Width="200pt"
Height="100pt"
DataContext="{Binding vmText}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Code, UpdateSourceTrigger=PropertyChanged}" Foreground="Black" Width="60" Header="Test" IsReadOnly="false" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Editor.xaml.cs
namespace View
{
public partial class Editor : Window
{
private ViewModel.VMText vmText;
#region Constructor
public Editor()
{
InitializeComponent();
vmText = new ViewModel.VMText(this);
DataContext = vmText;
}
#endregion
}
}
Просто искам да покажа списък, който е създаден във VMText в една колона в DataGrid
public List<string> Code {...}
сте събиране на данни за DataGrid, така че го свържете в<DataGrid x:Name="dataGrid" ... ItemsSource="{Binding Code}">
- person Dawid Wekwejt   schedule 29.12.2016ItemsSource="{Binding Code}"
. Изобщо не задавайтеDataContext
на мрежата; наследява това от гледката. 2) ТоваItemsSource
свързване няма да замениCode
; ще редактира елементите вCode
, което се оказва невъзможно по начина, по който сте го написали. С модела на изглед, който имате, всичко, което можете да направите, е да покажете елементите вCode
. Така чеCode
трябва да се промени: трябва да бъдеObservableCollection
на клас, който има свойство, което мрежата може да редактира. - person 15ee8f99-57ff-4f92-890c-b56153   schedule 29.12.2016