亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DataGrid 中選定的行已丟失

DataGrid 中選定的行已丟失

C#
慕妹3242003 2023-07-23 16:50:22
我有一個 DataGrid,它們的行更新得非??臁C啃卸加幸粋€右鍵單擊事件,如果單擊,則應將所選行添加到另一個數據網格中。問題是,當用戶選擇一行以便添加到另一個列表時,由于更新了所選行,他無法添加,因此用戶應該一次又一次地選擇該行。我的代碼是這樣的       <DataGrid SelectionMode="Single" CanUserAddRows="False"CanUserDeleteRows="False"  >            <DataGrid.Columns>                <DataGridTextColumn   Header="Data1"  Binding="{Binding Path=Data1}"></DataGridTextColumn>                <DataGridTextColumn   Header="Data2"  Binding="{Binding Path=Data2}"></DataGridTextColumn>                <DataGridTextColumn   Header="Data3"  Binding="{Binding Path=Data3}"></DataGridTextColumn>                <DataGridTextColumn   Header="Data4" Binding="{Binding Path=Data4}"></DataGridTextColumn>                <DataGridTextColumn   Header="Data5" Binding="{Binding Path=Data5}"></DataGridTextColumn>                <DataGridTextColumn   Header="Data6" Binding="{Binding Path=Data6}"></DataGridTextColumn>            </DataGrid.Columns>            <DataGrid.ContextMenu>                <ContextMenu HorizontalContentAlignment="Right" FlowDirection="RightToLeft">                    <MenuItem Name="addToBlackListMnuBtn" Header="Add to Black List" Click="addToBlackListMnuBtn_Click" FontWeight="Black"/>                    <MenuItem Name="addtoReportedListMnuBtn" Header="Add to Reported List"  Click="addtoReportedListMnuBtn_Click" FontWeight="Black"/>                </ContextMenu>            </DataGrid.ContextMenu>        </DataGrid>當我想從 contexMenu 單擊“addtoReportedListMnuBtn”時,我應該嘗試幾次來執行其事件。通常通過下面的代碼顯示消息框private void addtoReportedListMnuBtn_Click(object sender, RoutedEventArgs e)//add to reported list    {        ObjClass en = (ObjClass)ActiveSignalDataGrid.SelectedItem;        if(en!=null)        {            ReportSignalsListQ.Data = en; // add to queue for adding         }else        {            MessageBox.Show("Please select again");        }    }   
查看完整描述

2 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

我想說,DataGrid在你的例子中, a 是一個錯誤的地方ContextMenu。將您的ContextMenu資源放入窗口資源并將其用于DataGridCell.


<Window.Resources>

    <ContextMenu x:Key="contMen" HorizontalContentAlignment="Right" FlowDirection="RightToLeft">

        <MenuItem Name="addToBlackListMnuBtn" Header="Add to Black List" Click="addToBlackListMnuBtn_Click" FontWeight="Black"/>

        <MenuItem Name="addtoReportedListMnuBtn" Header="Add to Reported List"  Click="addtoReportedListMnuBtn_Click" FontWeight="Black"/>

    </ContextMenu>

</Window.Resources>



<DataGrid.Resources>

    <Style TargetType="DataGridCell">

        <Setter Property="ContextMenu" Value="{StaticResource contMen}"/>                        

    </Style>

</DataGrid.Resources>


private void addtoReportedListMnuBtn_Click(object sender, RoutedEventArgs e)//add to reported list

{

    var en = (((sender as MenuItem).Parent as ContextMenu).PlacementTarget as DataGridCell).DataContext as ObjClass;

    if (en != null)

    {

        ReportSignalsListQ.Data = en; // add to queue for adding 

    }

    else

    {

        MessageBox.Show("Please select again");

    }

}


查看完整回答
反對 回復 2023-07-23
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

當您ItemSource更新時,SelectedItem您的信息DataGrid將被清除。SelectionChanged因此,您可以向您添加一個事件DataGrid,并且需要將您分配SelectedItem給代碼隱藏中的局部變量,然后將局部變量添加到第二個DataGrid。



查看完整回答
反對 回復 2023-07-23
  • 2 回答
  • 0 關注
  • 243 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號