gpt4 book ai didi

c# - WPF ListView ItemTemplate问题

转载 作者:行者123 更新时间:2023-11-30 15:11:52 32 4
gpt4 key购买 nike

假设我有以下类层次结构:

public static class Constants
{
public enum MyEnum
{
Value1 =0,
Value2,
Value3
}
}

public class Data : INotifyPropertyChanged
{
public Data(string name, ushort id, Constants.MyEnum e)
{
DataName = name;
DataId = id;
DataEnum = e;
}

#region Properties
// get / set implementation not shown
public string DataName;
public ushort DataId;
public Constants.MyEnum DataEnum;
#endregion

// INotifyPropertyChanged implementation not shown
// Fields implementation not shown
}

public class DataContainer
{
public DataContainer()
{
ContainedData = new ObservableCollection<Data>();
ContainedData.Add(new Data("data1", 1, Constants.MyEnum.Value1));
ContainedData.Add(new Data("data2", 2, Constants.MyEnum.Value2));
ContainedData.Add(new Data("data3", 3, Constants.MyEnum.Value3));
}

public ObservableCollection<Data> ContainedData;
}

我想将 DataContainer 的 ContainedData 数据绑定(bind)到 ListView 并创建一个包含以下内容的 ItemTemplate:

我的目标:

  1. 我希望 Combobox 能够显示所有可能的 MyEnum 值
  2. 我希望 Combobox 实现到 DataEnum 字段的双向绑定(bind)

问题:

  1. 我如何实现列出的目标?
  2. 数据的属性有多种类型。这对 TextBox 重要吗?如果是这样,我应该只将它们公开为字符串吗?如何验证数据? (即确保用户没有在 DataId 字段等中传递“abc”)

最佳答案

要将 MyEnum 值放入组合框等 ItemsControl 中,请参阅 http://blogs.msdn.com/wpfsdk/archive/2007/02/22/displaying-enum-values-using-data-binding.aspx .要在 ListView 的 DataTemplate 中显示它,您将使用 CellTemplate 属性:

<DataTemplate x:Key="DataEnumTemplate">
<ComboBox ItemsSource="..." SelectedItem="{Binding DataEnum, Mode=TwoWay}" />
</DataTemplate>

<GridViewColumn CellTemplate="{StaticResource DataEnumTemplate" />

(其中 ItemsSource 根据链接文章)。

关于数据类型,TextBox.Text 绑定(bind)将自动在文本字符串和 ushort 或其他任何内容之间转换,如果字符串不可转换(例如“abc”),将自动发出验证错误信号。

关于c# - WPF ListView ItemTemplate问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1849674/

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