【问题标题】:Lookup-id-control in WPF DataGridWPF DataGrid 中的查找 ID 控件
【发布时间】:2011-08-01 13:44:12
【问题描述】:

我正在使用 DataGrid。一列显示文本,但其后面的数据只包含一个 id。这个 id 必须以某种方式转换为字符串。

我需要一个具有 ItemsSourceDisplayMemberPathSelectedValueSelectedValuePath 属性的组合框。但必须只有一个文本,而不是显示一个按钮。对此有什么控制吗?

这行得通(想用看起来像文本框的东西交换组合框):

<DataGridTemplateColumn Header="Leistungsart" MinWidth="100">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox   ItemsSource="{Binding Source={StaticResource ResourceKey=viewModel}, Path=Leistungsarten}"                                      
                                        DisplayMemberPath="Bezeichnung"
                                        SelectedValue="{Binding Path=BDELeistungsartID, Mode=OneWay, Converter={StaticResource ResourceKey=NullableInt2IntConverter}}"
                                        SelectedValuePath="BDELeistungsartID"
                                        IsEnabled="false"
                                        IsEditable="False"
                                        Height="35">                                
  </ComboBox>
</DataTemplate>

【问题讨论】:

    标签: wpf


    【解决方案1】:

    非常感谢您的回答。是的,模板属性对我有用:

    <ComboBox   ItemsSource="{Binding Source={StaticResource ResourceKey=viewModel}, Path=Leistungsarten}"                                      
                                        DisplayMemberPath="Bezeichnung"
                                        SelectedValue="{Binding Path=BDELeistungsartID, Mode=OneWay, Converter={StaticResource ResourceKey=NullableInt2IntConverter}}"
                                        SelectedValuePath="BDELeistungsartID">
                                <ComboBox.Template>
                                    <ControlTemplate>
                                        <Label Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.Bezeichnung}"
                                               Margin="0,0,0,0" Padding="0,0,0,0"/>
                                    </ControlTemplate>
                                </ComboBox.Template>
                            </ComboBox>
    

    【讨论】:

      【解决方案2】:

      您可以使用 ComboBox,但覆盖 Template 属性以仅显示标签。您还必须重新创建 Click 事件。

      最简单的方法是使用 Snoop 或 Blend 之类的工具,查看默认 ComboBox 模板的外观,然后将其修改为您想要的。

      【讨论】:

        猜你喜欢
        • 2017-10-16
        • 1970-01-01
        • 1970-01-01
        • 2014-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-17
        • 1970-01-01
        相关资源
        最近更新 更多