WPF MVVM單例項繫結解決全域性呼叫問題
阿新 • • 發佈:2018-12-09
對於出入門MVVM模式的人來說,能夠實現Model和View的繫結,但是慢慢的肯定會發現一個問題,那就是如果想在專案其他的類中去給Model的資料賦值或者呼叫Model方法,那就沒得搞啦。
對於這個問題,有一種很不錯的單例項思想能夠完美的解決,話不多說,直接上程式碼:
首先,我們假定已經做好的Model的定義和繫結,那麼我們現在來在Model中建立單例項。
private static MainViewModel current; public static MainViewModel Current { get { if (current == null) { current = new MainViewModel(); } return current; } set { current = value; } }
然後,我們就可以在其他類中來操作這個Model中的資料了。這裡我們在一個可愛的Button的點選事件中來做實驗。
private void Button_Click(object sender, RoutedEventArgs e)
{
MainViewModel.Current.Data = tb.Text.ToString();
}
當然,如果xaml中仍然是普通的Binding肯定也是不行的啦,需要使用靜態繫結。
<Grid> <Label Content="繫結物件" Width="100" Height="30" Margin="96,146,322.4,146.4" ></Label> <TextBox Text="{Binding Data,Source={x:Static local:MainViewModel.Current},Mode=OneWay}" Margin="178,137,100.4,146.4"></TextBox> <Label Content="繫結源" Width="100" Height="30" Margin="96,202,322.4,90.4" ></Label> <TextBox Text="哈哈" x:Name="tb" Margin="178,202,100.4,81.4"></TextBox> <Button Content="變" Margin="436,202,25.4,89.4" Click="Button_Click"></Button> </Grid>
我知道大家都跟我一樣,最喜歡的還是呆毛,作為一個懶得發毛的博主,本人勉為其難的給大家寫了個呆毛。