ComboBox Multibinding



我对WPF很陌生。我有一个问题与组合框

        <ComboBox Grid.Column="2" Grid.Row="5" x:Name="ddlLocation" ItemsSource="{Binding Users.Locations}" Text="&lt;None Selected&gt;" IsEditable="True" IsReadOnly="True" SelectedValue="{Binding Users.SelectedUser.Location}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{}{0} - {1}">
                            <Binding Path="Name" />
                            <Binding Path="ShortName" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>
        <!--<ComboBox.SelectionBoxItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{}{0} - {1}">
                            <Binding Path="Name" />
                            <Binding Path="ShortName" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ComboBox.SelectionBoxItemTemplate>-->
    </ComboBox>

如果我这样做,我将在选择框中获得typename。似乎我应该能够使用SelectionBoxItemTemplate,但它告诉我SelectionBoxItemTemplate没有一个可访问的setter。你会怎么做呢?

看起来这是有IsEditable="True"的结果,我建议删除,因为你也有IsReadOnly="True"

关于Text属性-当没有选择时的默认值…我只是把这个放在那里,但我希望有人有一个更好的解决方案…我在网上快速浏览了一下,什么也没看到。

包含命名空间

xmlns:conv="clr-namespace:StackOverflow.Converters"
一些xaml

<ComboBox ... IsEditable="{Binding SelectedItem, RelativeSource={RelativeSource Self}, Converter={StaticResource NullBoolConverter}, FallbackValue=False}">
    <ComboBox.Resources>
        <conv:NullBoolConverter x:Key="NullBoolConverter" />
    </ComboBox.Resources>

转换器类

namespace StackOverflow.Converters
{
    class NullBoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value == null;
        }
        ....
     }
}

相关内容

  • 没有找到相关文章

最新更新