在WPF WPF MVVM燒製代碼MVVM很容易,當用戶更改標籤火一些代碼。基於標籤的SelectedValue,而不是SelectedIndex的
<TabControl Margin="0 5 5 5" Background="#66F9F9F9" SelectedIndex="{Binding TabIndex}">
然後在視圖模型:
private int _tabIndex;
public int TabIndex
{
get { return _tabIndex; }
set
{
if(_tabIndex != value)
{
_tabIndex = value;
OnPropertyChanged("TabIndex");
if(value == 1)
{
//do something
}
}
}
}
但我這個隱約感到不舒服。如果其他開發人員稍後發生並在「1」位置添加另一個選項卡,該怎麼辦?如果這是應用程序關鍵代碼(它就是這樣),那麼事情將會非常突出。
危險可以與單元測試被最小化,當然。但它讓我想知道:這是否被認爲是不好的做法?有沒有一種方法可以讓你用字符串而不是int來引用Tab?我試圖用綁定到SelectedValue
屬性,但沒有什麼似乎在選項卡更改時發生。
我也會關心這一點。另一個警告標誌是在視圖模型中有一個Tab索引,意味着視圖模型中存在基於視圖的邏輯,這打破了視圖和邏輯的分離。在更改標籤頁時需要完成什麼? – sondergard 2014-09-03 14:10:28
@sondergard初始選項卡允許用戶選擇多個對象,這些對象需要在切換到使用新數據的第二個選項卡之前創建並保存到數據庫。 – 2014-09-03 14:21:17