【发布时间】:2013-08-05 15:34:37
【问题描述】:
如何将视图模型中的布尔值传递给视图并更改值。 例如,在我的视图模型中,我创建了一个 bool
public bool load
{
get { return m_load; }
set
{
m_load = value;
OnPropertyChanged(this, o => o.load);
}
}
然后我有我的SelectedVm 代码
public ViewModel SelectedVm
{
get { return _selectedVm; }
set
{
_selectedVm = value;
if (_selectedVm != null && load == true)
{
_selectedVm.Load();
}
Load = false;
OnPropertyChanged(this, o => o.SelectedVm);
}
}
在我看来,SelectedVm 被绑定了两次,但我只希望在其中一个绑定上调用 Load,因此需要更改布尔值 load
所以在我看来,如果我有以下情况
<ListView Grid.Row="1" Name="Sample"
ItemsSource="{Binding Path=SampleViewModel}"
SelectedItem="{Binding SelectedVm, Mode=TwoWay}"
IsSynchronizedWithCurrentItem="True" Width="500">
</ListView>
如何将 bool 负载更改为 true 或 false
以上所有只是快速示例,我认为这可能很简单,但是我不习惯WPF,并且仍在学习。任何建议都会很棒
【问题讨论】:
-
为什么要从viewmodel传递一个bool到view并改变值?
-
我有一个问题,方法 Load() 被多次调用但它只需要调用一次,在我看来 SelectedVM 被绑定了两次,这意味着 Load() 被调用了两次,但我只想要一次,所以每次绑定 SelectedVm 时都会设置 bool。希望这是有道理的
-
你的代码应该只调用一次 Load(),即使你有多个绑定。问题是什么? – Liel 5 分钟前
-
另一个绑定是新视图的 dataContext 绑定,我原以为这意味着它被调用了两次,而且它肯定是因为我已经逐步完成了代码。
标签: c# .net wpf data-binding mvvm