【WPF開發備忘】使用MVVM模式開發中列表控件內的按鈕事件無法觸發解決方法


實際使用MVVM進行WPF開發的時候,可能會用到列表控件中每行一個編輯或刪除按鈕,這時直接去綁定,發現無法響應:

<DataGridTemplateColumn Header="操作">
  <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
                <Button Command="{Binding DeleteCommand}" CommandParameter="SysID"></Button>
    </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>    

我也是WPF新手,網上找到一些解決方法:http://stackoverflow.com/questions/4396203/how-to-fire-event-from-button-inside-datagrid-in-silverlight-and-mvvm

這種方法需要BUTTON重新綁定一個DataContext,可能造成某些數據丟失。不滿足我的功能要求。

最后在一篇文章的評論中找到解決方法如下:

<DataGridTemplateColumn Header="操作">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" CommandParameter="{Binding SysID}" Content="刪除"></Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

主要是通過RelativeSource 進行 DataContext 查找,進而進行綁定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM