C# 如何使用MVVM灯光设置WP7中StackPanel的可见性?
我一直在尝试从viewmodel设置stackpanel的可见性,但运气不好。这是我的XAML:C# 如何使用MVVM灯光设置WP7中StackPanel的可见性?,c#,silverlight,windows-phone-7,mvvm,mvvm-light,C#,Silverlight,Windows Phone 7,Mvvm,Mvvm Light,我一直在尝试从viewmodel设置stackpanel的可见性,但运气不好。这是我的XAML: <StackPanel Visibility="{Binding Path=IsVisible}"/> 这种方法适用于我使用过的所有其他属性,没有问题。我只是无法获得转移的可见性。有什么建议吗?对我的机器有效:D 我知道,这不是一个很好的答案。也许看看我得到的示例代码会有所帮助: 将datacontext设置为MainViewModel和绑定在stackpanel上可见。我还将按钮绑定
<StackPanel Visibility="{Binding Path=IsVisible}"/>
这种方法适用于我使用过的所有其他属性,没有问题。我只是无法获得转移的可见性。有什么建议吗?对我的机器有效:D
我知道,这不是一个很好的答案。也许看看我得到的示例代码会有所帮助:
将datacontext设置为MainViewModel和绑定在stackpanel上可见。我还将按钮绑定到一个命令,该命令将IsVisible属性更改为Collapsed:
(XAML)
当然,确保您的视图模型类继承自ViewModelBase和所有jazz。您已经提到,其他属性已正确绑定,但在调试时,最好注意输出窗口中的绑定错误
希望这能有所帮助 在我的机器上工作:D
我知道,这不是一个很好的答案。也许看看我得到的示例代码会有所帮助:
将datacontext设置为MainViewModel和绑定在stackpanel上可见。我还将按钮绑定到一个命令,该命令将IsVisible属性更改为Collapsed:
(XAML)
当然,确保您的视图模型类继承自ViewModelBase和所有jazz。您已经提到,其他属性已正确绑定,但在调试时,最好注意输出窗口中的绑定错误
希望这能有所帮助 看起来对我来说应该有用。您是否在setter/getter中设置了断点以确保它按预期更新?在输出窗口中有任何绑定错误吗?看起来应该可以。您是否在setter/getter中设置了断点以确保它按预期更新?在输出窗口中有任何绑定错误吗?哦,快照。。从技术上讲,我不是在WP7项目中做这件事的。。我想这个例子应该是一样的。。从技术上讲,我不是在WP7项目中做这件事的。。不过,我怀疑这个例子应该是相同的。
private Visibility isVisible;
public Visibility IsVisible
{
get
{
return isVisible;
}
set
{
isVisible = value;
RaisePropertyChanged("IsVisible");
}
}
<UserControl x:Class="MvvmLight1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Height="300"
Width="300"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<StackPanel Height="100" Visibility="{Binding IsVisible}" HorizontalAlignment="Left" Margin="0,29,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="200">
<TextBlock Height="23" Name="textBlock1" Text="I'm here!" />
</StackPanel>
<Button Content="Make the Stackpanel GO!" Height="23" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" Width="158" Command="{Binding Path=MakeVisibleCommand}" />
</Grid>
private Visibility _isVisible = Visibility.Visible;
public Visibility IsVisible
{
get
{
return _isVisible;
}
set
{
_isVisible = value;
RaisePropertyChanged("IsVisible");
}
}
public RelayCommand MakeVisibleCommand
{
get
{
return new RelayCommand(() => IsVisible = Visibility.Collapsed);
}
}