私は、Universal Windows Platformアプリケーションでmvvmロジックを処理しようとしています。すべて静的バインディングとobservableCollectionsでうまく動作しますが、私はバインドボタンでClick
イベントをboolプロパティに詰め込みました。理論的にはSplitView
のIsPaneOpen
状態に影響するはずです。最初は見た目が綺麗に見え、警告もなくビルドされていますが、何らかの形でそれがプロパティの変更を観察可能にすることができません。 ここに私のMainPageViewModel.csです:IsPaneOpenをboolプロパティにバインドする問題
public class MainPageViewModel : INotifyPropertyChanged
{
public string Title
{
get
{
return "String!"; // it works
}
}
private bool _isPaneOpen; // false
public bool isPaneOpen // x:Bind to SplitViews's "IsPaneOpen" property
{
get { return _isPaneOpen; } // false
set
{
if (value != this._isPaneOpen)
{
Debug.WriteLine(_isPaneOpen); // false
_isPaneOpen = value; // false -> true
Debug.WriteLine(_isPaneOpen); // true
this.OnPropertyChanged("isPaneOpen"); // and nothing happended...
}
}
}
public void changePaneState() // x:Bind to button
{
isPaneOpen = !isPaneOpen; // true
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
そして、ここでは、MainPage.xamlをです:
<StackPanel Orientation="Horizontal" Grid.Column="0">
<Button Background="#eee" Name="Back" Height="50" Width="50" FontFamily="Segoe MDL2 Assets" FontSize="22" Content="" Click="{x:Bind ViewModel.changePaneState}"/>
<TextBlock VerticalAlignment="Center"
Margin="10 0 0 0"
Name="DebugTextBlock" FontSize="18" Text="{x:Bind ViewModel.Title}"
FontWeight="SemiBold"/>
</StackPanel>
</Grid>
</Grid>
<SplitView Name="SideBar" IsPaneOpen="{x:Bind ViewModel.isPaneOpen}" Style="{StaticResource SplitViewStyle}">
<SplitView.Pane>
<Grid>
うまくいかないかもしれないものを任意のアイデア?あなたが与えられているはずUIで反映させるため、ViewModelにに変更を行っているので、
作業完璧!ありがとう。 – vrodis