1

ListBoxItem表示される文字列とDBに格納される値を何らかの方法で提供できるかどうかを尋ねてください。これは確かに可能です:

ItemSource={Binding MyEnumColleciton}

また

ItemSource={DynamicResource MyCollection}

等..

しかし、私が約100個のListBoxを持っていることをイメージした場合、..それほど多くの異なる列挙や他のItemSourceコレクションを持ちたくないので、ListBoxItemに直接書き込みたいと思います。

これは私が話していることです:

<ListBox SelectedItem="{Binding Path=MyPath1}" Style="{StaticResource RadioButtonList}">
    <ListBoxItem Content="Text1" />
    <ListBoxItem Content="Text2" />
</ListBox>

<ListBox SelectedItem="{Binding Path=MyPath2}" Style="{StaticResource RadioButtonList}">
    <ListBoxItem Content="Text3" />
    <ListBoxItem Content="Text4" />
</ListBox>

<ListBox SelectedItem="{Binding Path=MyPath3}" Style="{StaticResource RadioButtonList}">
    <ListBoxItem Content="Text5" />
    <ListBoxItem Content="Text6" />
</ListBox>

... 100x
4

1 に答える 1

0

さて、私はこれを思いついた:

public class ItemSourceProvider
    {
        public IEnumerable<ValueText<int>> GetValues(object o)
        {
            if (o == null) return null;

            switch (o.ToString().ToUpper())
            {
                case "PARAM":
                {
                    return new List<ValueText<int>>() 
                    {
                        new ValueText<int>{Value = 1, Text = "YES"},
                        new ValueText<int>{Value = 2, Text = "PARTIALLY"},
                        new ValueText<int>{Value = 3, Text = "NO"}
                    };
                }
                default: return null;
            }
        }
    }

    public class ValueText<T>
    {
        public string Text { get; set; }
        public T Value { get; set; }
    }

コントロールのリソースに DP を追加します。

<ObjectDataProvider x:Key="testODP" MethodName="GetValues" ObjectType="{x:Type local:ItemSourceProvider}">
    <ObjectDataProvider.MethodParameters>PARAM</ObjectDataProvider.MethodParameters>                            
</ObjectDataProvider>

その後:

<ListBox SelectedValue="{Binding Path=A}" SelectedValuePath="Value" Style="{StaticResource RadioButtonList}" DisplayMemberPath="Text" ItemsSource="{Binding Source={StaticResource testODP}}" />
于 2010-08-05T14:05:08.870 に答える