У меня возникли проблемы с привязкой списка к 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
; он отредактирует элементы inCode
, что невозможно в том виде, в котором вы это написали. С имеющейся у вас моделью просмотра все, что вы можете сделать, это отобразить элементы вCode
. Итак,Code
нужно изменить: это должен бытьObservableCollection
класса, у которого есть свойство, которое сетка может редактировать. - person 15ee8f99-57ff-4f92-890c-b56153   schedule 29.12.2016