我似乎找不到正确的语法来允许将附加属性用作ComboBox的DisplayMemberPath。

该属性是SelectorSwitchedControl.NameForSelector
它在名称空间“ LocalTest”中,该名称空间映射到XAML前缀“ local”。

这是代码...

<UserControl x:Class="Playground.SelectorSwitchedControlTest.SelectorSwitchedControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:glc="clr-namespace:Playground.CommonControls"
    xmlns:local="clr-namespace:Playground.SelectorSwitchedControlTest"
    Background="Transparent">

    <Border x:Name="MainBorder"
        BorderBrush="Gray" BorderThickness="1">

        <DockPanel>

            <glc:FixedToolBar DockPanel.Dock="Top">

                <ComboBox x:Name="MainSelector"
                    ItemsSource="{Binding Children, ElementName=MainPanel}"
                    DisplayMemberPath="(local:SelectorSwitchedControl.NameForSelector)" />

            </glc:FixedToolBar>

            <local:SelectorSwitchedControlPanel x:Name="MainPanel" />

        </DockPanel>

    </Border>

</UserControl>


...由于某种原因,这给了我一个例外,即“本地前缀”未映射到名称空间。”我不知道为什么要说,就像我删除了“ DisplayMemberPath”行一样,“”标记的呈现方式就像应该证明名称空间已映射一样。

我也尝试了以下所有方法...


DisplayMemberPath =“ local:SelectorSwitchedControl.NameForSelector”
DisplayMemberPath =“(local:SelectorSwitchedControl.NameForSelector)”
DisplayMemberPath =“ SelectorSwitchedControl.NameForSelector”
DisplayMemberPath =“(SelectorSwitchedControl.NameForSelector)”
DisplayMemberPath =“ LocalTest.SelectorSwitchedControl.NameForSelector”
DisplayMemberPath =“(LocalTest.SelectorSwitchedControl.NameForSelector)”


我知道那只是那些我的头脑无法正常工作的日子,我想念一些简单的东西,但这却使我发疯!那么正确的语法是什么?

最佳答案

DisplayMemberPath-每个项目的显示字符串属性的路径。将其设置为“ NameForSelector”,而不是“ {Binding NameForSelector}”。

 <DockPanel>
    <ComboBox x:Name="MainSelector" ItemsSource="{Binding Children}" DisplayMemberPath="NameForSelector" />
 </DockPanel>

 public class SelectorSwitchedControl
    {
        public string Name { get; set; }
        public string NameForSelector{ get; set; }
    }

关于c# - 如何将附加属性绑定(bind)到ComboBox的DisplayMemberPath?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19693384/

10-10 14:58