在WindowViewModel 有一个名为状态栏。绑定一个子类属性
在StatusBarViewModel财产,有一个叫 公共BatteryIndicatorViewModel batIndicatorViewModel
在BatteryIndicatorViewModel财产,有一个叫物业 公共BOOL IsLowBattery
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding statusBar.batIndicatorViewModel.IsLowBattery}" Value="true" />
</MultiDataTrigger.Conditions>
IsLowBattery属性绑定到CheckBox,在window2中绑定到WindowVi ewModel
<CheckBox IsChecked="{Binding Path=statusBar.batIndicatorViewModel.IsLowBattery}" Content="Low Battery" Grid.Column="2" Margin="0,0,34.743,14.04" Grid.Row="1" />
它显示以下错误: - System.Windows.Data错误:39:BindingExpression路径错误: '的状态栏' 属性不是 '对象' '' StatusBarViewModel '(的HashCode = 25431989)' 中找到。 BindingExpression:路径= statusBar.batIndicatorViewModel.IsLowBattery; DataItem ='StatusBarViewModel'(HashCode = 25431989);目标元素是'ContentControl'(Name ='');目标属性是 'NoTarget'(类型为 'Object')
代码.....
Window2.xaml .. 我在Window2.xaml一个HeaderedItemsControl这势必工作区
<Grid>
<HeaderedItemsControl ItemsSource="{Binding Path=Workspaces}" Header="StatusBar" />
<CheckBox IsChecked="{Binding statusBar.batIndicatorViewModel.IsLowBattery}" Content="Low Battery" Grid.Column="2" Margin="0,0,34.743,14.04" Grid.Row="1" />
<CheckBox IsChecked="{Binding statusBar.batIndicatorViewModel.IsCharging}" Content="Charging" Grid.Column="1" Grid.ColumnSpan="2" Height="15.96" Margin="5.76,0,48.67,0" Grid.Row="2" VerticalAlignment="Top" />
</Grid>
WindowViewModel.cs ..
WindowViewModel这势必窗口2的datacontext
public class WindowViewModel:WorkspaceViewModel
{
public ObservableCollection<WorkspaceViewModel> Workspaces
public StatusBarViewModel StatusBarVM;
private void ShowStatusBar()
{
StatusBarVM = new StatusBarViewModel();
this.Workspaces.Add(StatusBarVM);
this.SetActiveWorkspace(StatusBarVM);
}
StatusBar.xaml ..
<usercontrol>
<Grid Background="Black" Height="20" Width="240">
<vw:BatteryIndicator Height="20" Width="30" IsTabStop="False" VerticalAlignment="Top" HorizontalAlignment="Right" Grid.Column="1"/>
<!—some other usercontrols are used here -- >
</Grid>
</UserControl>
StatusBarViewModel.cs ..
public class StatusBarViewModel : WorkspaceViewModel
{
public BatteryIndicatorViewModel BatteryIndicatorVM;
}
BatteryIndicatorViewModel.cs ..
public class BatteryIndicatorViewModel : WorkspaceViewModel
{
Public bool IsCharging;
public bool IsLowBattery;
}
现在我的问题是我怎么绑定IsCharging在BatteryIndicatorViewModel到windowviewmodel的低电池复选框
你是否将Window.DataContext设置为WindowViewModel? – 2010-07-30 15:56:04
是的我已经将datacontext设置为windowViewModel – suman 2010-08-03 06:33:51