1

我想问你是否有可能在将出现ListBoxItem的字符串和要存储在 DB 中的值中提供。这确实是可能的:

ItemSource={Binding MyEnumColleciton}

或者

ItemSource={DynamicResource MyCollection}

ETC..

但是如果你想象我有大约 100 个 ListBoxes .. 我不想有这么多不同的枚举和其他 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 回答