我們正在WPF應用程序中實現MVVM架構。我們想使用Infragistics XamDataGrid,但是在視圖模型圖層上實現選擇已更改的事件失去了一些。Infragistics XamDataGrid WPF MVVM SelectionChanged
任何幫助將不勝感激。
我們迫切需要一個解決方案!
Anshuman Chakravarty Humana公司公司
我們正在WPF應用程序中實現MVVM架構。我們想使用Infragistics XamDataGrid,但是在視圖模型圖層上實現選擇已更改的事件失去了一些。Infragistics XamDataGrid WPF MVVM SelectionChanged
任何幫助將不勝感激。
我們迫切需要一個解決方案!
Anshuman Chakravarty Humana公司公司
我已經解決了上述問題。我以非常簡單的方式做到了。
簡單但有效!
我從來沒有用過,你問的是數據網格,但你可以打賭,它的工作原理同一切。
在ViewModel中,您將視圖綁定到將會有一個名爲SelectedItem的屬性或某種特效。
public object SelectedItem
{
get { return (object)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedItem. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem", typeof(object), typeof(ownerclass), new UIPropertyMetadata(0));
在xaml中,您可能會將網格Selected屬性綁定到該依賴屬性。
<XamDataGrid ItemsSource={Binding Items} SelectedItem={Binding SelectedItem, UpdateSourceTrigger=PropertyChanged} />
嗨安迪,謝謝期待你的答覆。但是這看起來更像綁定SelectedItem屬性。我已經實現了。我需要爲SelectionChange實現指令(事件處理委派)。這是不工作在這個XAMDataGrid – Anshuman
嗨安迪,當我嘗試創建DependencyProperty並在XAMDataGrid中使用它時,我得到以下錯誤: 錯誤屬性'SelectedItem'不存在於XML命名空間'http:/ /infragistics.com/DataPresenter」。 94行位置27. – Anshuman
xamDataGrid不包含SelectedItem屬性 – PiotrWolkowski
這裏是一些xamdatagrid的其他活動。
SelectedItemsChanged
SelectedItemsChanging
RecordActivating
RecordActivated
這些可能會幫助你。
如果您希望能夠使用MVVM綁定選定的項目,那麼我會建議使用一種行爲來完成此操作。 Devin Rader編寫了一個blog post,其中介紹了視圖模型和用戶界面之間的同步值,您可以使用類似的東西來知道選擇在視圖模型中發生了何種變化。
讓我知道你是否對此事有任何疑問。
對於Infragistic v11.2 XamlDataGrid具有名爲的屬性ActiveDataItem,它們表示綁定到該行的當前數據項。
你可以做的是在你的ViewModel中創建屬性,並將其綁定到XamlDataGrid的ActiveDataItem,如下所示,並觀察下面的更改。
<igDataPresenter:XamDataGrid ActiveDataItem="{Binding ActiveItem, Mode=TwoWay}" >
我的情況: 我想解僱我的DataItem命令綁定到單個網格行對各行的DoubleClick,下面XAML代碼工作對我來說,
<igDataPresenter:XamDataGrid x:Name="DemoGrid"
DataSource="{Binding Path=Items, Mode=OneWay}"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=igDataPresenter:XamDataGrid}, Path=ActiveDataItem.ViewCommand}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
這個工作,但現在你的ViewModel耦合到而不是其他方式。如果你想改變你的控制庫到另一個第三方庫,甚至你自己的自定義控件,你必須改變ViewModel,這正是你不應該做的... – aaronburro
嗨亞倫,謝謝你您的評論,但我不認爲我的虛擬機與V耦合。該對象不知道它來自哪裏,從那裏開始,我正在虛擬機的集合處進行處理,並且與無關。風景。實際上,視圖與我的虛擬機連接到我上面提到的屬性! – Anshuman
如果我正確理解你,你的ViewModel中有一個屬性綁定到視圖。當視圖上的活動單元格更改時,它會在ViewModel中調用setter。該制定者轉換爲Infragistics.Windows.Cell類型。現在,將視圖更改爲使用SyncFusion網格。你的ViewModel會繼續工作嗎?如果不是,那麼它與視圖耦合。 – aaronburro