Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf DataGridComboxColumn未处于编辑模式时显示不同的文本_Wpf_Datagrid_Datagridcomboboxcolumn - Fatal编程技术网

Wpf DataGridComboxColumn未处于编辑模式时显示不同的文本

Wpf DataGridComboxColumn未处于编辑模式时显示不同的文本,wpf,datagrid,datagridcomboboxcolumn,Wpf,Datagrid,Datagridcomboboxcolumn,我有一个DataGridComboxColumn,它绑定到类型为MyItem的对象集合。MyItem有两个字符串属性:描述和快捷方式 如果列未处于编辑模式,我希望显示快捷方式属性中的字符串;如果列处于编辑模式,我希望显示描述属性中的字符串 如果没有DataGridTemplateColumn,这可能吗 进一步资料: 目前,我已经将DisplayMemberPath属性设置为“Description”。我发现,最好的方法是使用DataGridTemplateColumn而不是DataGridCom

我有一个DataGridComboxColumn,它绑定到类型为MyItem的对象集合。MyItem有两个字符串属性:描述和快捷方式

如果列未处于编辑模式,我希望显示快捷方式属性中的字符串;如果列处于编辑模式,我希望显示描述属性中的字符串

如果没有DataGridTemplateColumn,这可能吗

进一步资料:
目前,我已经将DisplayMemberPath属性设置为“Description”。

我发现,最好的方法是使用
DataGridTemplateColumn
而不是
DataGridComboxColumn

DataGridComboxColumn
既不公开
CellTemplate
(未编辑时显示)也不公开
CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建
ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即
DataGridTemplateColumn

只需将
CellTemplate
a
标签
绑定到您的
快捷方式
属性,将
CellEditingTemplate
a
组合框
与您为
DataGridComboBoxColumn
提供的绑定相同即可

毕竟,你的专栏应该是这样的

<DataGridTemplateColumn Header="...">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Label Content="{Binding Shortcut}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="..."
                        DisplayMemberPath="Description"
                        SelectedItem="..."/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>


附录-我之所以提倡使用
标签
而不是
文本块
,是因为
标签
自动包括对齐和边距
TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。

我发现,最好的方法是使用
DataGridTemplateColumn
而不是
DataGridComboBoxColumn

DataGridComboxColumn
既不公开
CellTemplate
(未编辑时显示)也不公开
CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建
ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即
DataGridTemplateColumn

只需将
CellTemplate
a
标签
绑定到您的
快捷方式
属性,将
CellEditingTemplate
a
组合框
与您为
DataGridComboBoxColumn
提供的绑定相同即可

毕竟,你的专栏应该是这样的

<DataGridTemplateColumn Header="...">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Label Content="{Binding Shortcut}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="..."
                        DisplayMemberPath="Description"
                        SelectedItem="..."/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>


附录-我之所以提倡使用
标签
而不是
文本块
,是因为
标签
自动包括对齐和边距
TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。

我发现,最好的方法是使用
DataGridTemplateColumn
而不是
DataGridComboBoxColumn

DataGridComboxColumn
既不公开
CellTemplate
(未编辑时显示)也不公开
CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建
ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即
DataGridTemplateColumn

只需将
CellTemplate
a
标签
绑定到您的
快捷方式
属性,将
CellEditingTemplate
a
组合框
与您为
DataGridComboBoxColumn
提供的绑定相同即可

毕竟,你的专栏应该是这样的

<DataGridTemplateColumn Header="...">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Label Content="{Binding Shortcut}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="..."
                        DisplayMemberPath="Description"
                        SelectedItem="..."/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>


附录-我之所以提倡使用
标签
而不是
文本块
,是因为
标签
自动包括对齐和边距
TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。

我发现,最好的方法是使用
DataGridTemplateColumn
而不是
DataGridComboBoxColumn

DataGridComboxColumn
既不公开
CellTemplate
(未编辑时显示)也不公开
CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建
ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即
DataGridTemplateColumn

只需将
CellTemplate
a
标签
绑定到您的
快捷方式
属性,将
CellEditingTemplate
a
组合框
与您为
DataGridComboBoxColumn
提供的绑定相同即可

毕竟,你的专栏应该是这样的

<DataGridTemplateColumn Header="...">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Label Content="{Binding Shortcut}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="..."
                        DisplayMemberPath="Description"
                        SelectedItem="..."/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>


附录-我之所以提倡使用
标签
而不是
文本块
,是因为
标签
自动包括对齐和边距
TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。

谢谢您的示例。我的希望是不使用DataGridTemplateColumn,但我想这是不可能的:/如果你真的想,你也可以使用datagridcombobox列,并使用样式覆盖CellTemplate。但是,这可能不起作用(在