在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