gpt4 book ai didi

C#、WPF、将 List 绑定(bind)到 DataGrid

转载 作者:太空狗 更新时间:2023-10-30 00:04:34 28 4
gpt4 key购买 nike

我无法将 List 绑定(bind)到 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
}
}

我只想在 DataGrid 的一列中显示在 VMText 中创建的列表

最佳答案

我猜您只是想在 DataGrid 中的 View 模型的代码源集合属性中显示字符串。

然后您应该将 DataGrid 的 ItemsSource 属性绑定(bind)到 View 模型的代码源属性,然后将 DataGridTextColumn 绑定(bind)到代码列表本身中的字符串。您只需稍微修改 View 的 XAML 标记即可看到字符串。试试这个:

<DataGrid x:Name="dataGrid" 
HorizontalAlignment="Left"
Margin="0,0,0,0"
VerticalAlignment="Top"
Width="200pt"
Height="100pt"
ItemsSource="{Binding Code}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}"
Foreground="Black" Width="60" Header="Test" IsReadOnly="false" />
</DataGrid.Columns>
</DataGrid>

关于C#、WPF、将 List<string> 绑定(bind)到 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41381502/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com