gpt4 book ai didi

wpf - WPF MVVM中的DataGrid DataTemplate组合框中的IsDropDownOpen

转载 作者:行者123 更新时间:2023-12-03 10:16:47 25 4
gpt4 key购买 nike

我在DataTemplate中有一个带有ComboBox的DataGrid

<DataGridTemplateColumn Header="Stock Name" Width="290">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding StockName}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Width="290" Name="cmbStock" ItemsSource="{Binding Path=Stocks}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}" ></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

当我使用Tab到达此DataGridCell时,我希望ComboBox为DropDownOpen
这包括在我到达DataGrid Cell时使其处于编辑模式。

我正在使用WPF MVVM

最佳答案

我认为您需要做的是迫使数据网格进入“单击或标签”编辑模式。基本上,当单元格被聚焦时,迫使网格将CellTemplate旋转到CellEditingTemplate。该代码是:

BeginEdit(); //dataGrid.BeginEdit()

现在,如何进行连接以及在何处进行连接取决于您要完成的工作量。您可以扩展DataGrid类,并引入DependencyProperty“SingleClickEdit”或任何您想调用的类。然后,当按下“监视器/预览”键并在其上的选项卡上时,选择单元格并强制其处于编辑模式。或者,如果只需要该列,则可以进行监视:
<TextBlock Text="{Binding StockName}" 
GotFocus="OnGotFocus"
PreviewKeyDown="OnPreviewKeyDown"
....., or something like that

然后,在.cs代码中,例如在OnGotFocus()中,调用datagrid.BeginEdit()。

编辑:(根据以下评论/转换)
  • 将SelectionChanged处理程序添加到您的数据网格
  • 将IsDropDownOpen = true添加到您的组合框
    <DataGrid x:Name="dataGrid" 
    SelectionChanged="dataGrid_SelectionChanged"
    ....>

    <ComboBox Width="290" Name="cmbStock" ItemsSource="{Binding Path=Stocks}"
    ...
    IsDropDownOpen="True"></ComboBox>
    </DataTemplate>
  • .cs中的

  • private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    dataGrid.BeginEdit();
    }

  • 那样就可以了,在我的测试中工作:),基本上,您是在选择时将datagrid强制设为编辑模式,并且在编辑模式下,您已经打开了组合框

    关于wpf - WPF MVVM中的DataGrid DataTemplate组合框中的IsDropDownOpen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285609/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com