簡體   English   中英

WPF ListView ItemTemplate問題

[英]WPF ListView ItemTemplate questions

假設我有以下類層次結構:

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數據綁定到ListView並創建一個包含以下內容的ItemTemplate:

我的目標 :

  1. 我希望Combobox能夠顯示所有可能的MyEnum值
  2. 我希望Combobox實現對DataEnum字段的TwoWay綁定

問題:

  1. 我如何實現列出的目標?
  2. 數據的屬性有不同的類型。 對TextBox有用嗎? 如果是這樣,我應該只將它們暴露為字符串嗎? 如何驗證數據? (即確保用戶未在DataId字段中傳遞“abc”等)

要將MyEnum值轉換為ItemsControl(如ComboBox),請參閱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綁定將自動在文本字符串和ushort之間進行轉換,如果字符串不可轉換(例如“abc”),它將自動發出驗證錯誤信號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM