如何在按鈕上使用工具欄(這是一個用戶控件)啓用等待光標。 我有一個ViewModel繼承自viewmodelBase。但我不能在工具欄上使用IsWorking。如何從MVVM中的ViewModel訪問用戶控件(工具欄)?
下面的代碼是工具欄的代碼。我點擊選擇按鈕。數據正在從數據庫中選擇。遊標必須等待。選擇後,遊標必須恢復正常。
<Button x:Name="Select"
Content="select"
Command="{Binding SelectCommand }">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Cursor" Value="Arrow"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsWorking}" Value="True">
<Setter Property="Cursor" Value="Wait"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
ViewModelBase.cs:沒有與工具欄沒有繼承。它是一個基礎模型。
private bool _isWorking = false;
public bool IsWorking
{
get { return _isWorking; }
set
{
_isWorking = value;
OnPropertyChanged("IsWorking");
}
}
這裏是從視圖模型代碼:
public class MainViewModel : ViewModelBase
{
public void Select()
{
IsWorking = true; cursor turn to wait mode
// db Process...
IsWorking = false; cursor turn to hand mode
}
}
如何從視圖模型工具欄溝通?點擊選擇光標必須轉爲等待模式。選擇後,光標必須是手形(默認)。
Changing the cursor in WPF sometimes works, sometimes doesn't
一切都很好。謝謝。但如何處理異常。如果發生異常,光標必須是缺省值。 – programmerist
@programmerist我認爲這是一個新問題,因爲它與原始問題無關(「從VM訪問工具欄」)。但是,簡而言之,您應該在虛擬機中有另一個名爲IsErrorOccured的布爾屬性,並在其爲true時使用另一個DataTrigger來更改光標。 – Blachshma