2010-07-30 70 views
0

在WindowViewModel 有一個名爲狀態欄。綁定一個子類屬性

在StatusBarViewModel財產,有一個叫 公共BatteryIndi​​catorViewModel batIndicatorViewModel

在BatteryIndi​​catorViewModel財產,有一個叫物業 公共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; 
} 

BatteryIndi​​catorViewModel.cs ..

public class BatteryIndicatorViewModel : WorkspaceViewModel 
    { 
Public bool IsCharging; 
public bool IsLowBattery; 
} 

現在我的問題是我怎麼綁定IsCharging在BatteryIndi​​catorViewModel到windowviewmodel的低電池複選框

+0

你是否將Window.DataContext設置爲WindowViewModel? – 2010-07-30 15:56:04

+0

是的我已經將datacontext設置爲windowViewModel – suman 2010-08-03 06:33:51

回答

0

錯誤是告訴你正在使用綁定的元素的DataContext已經設置爲StatusBarViewModel,最有可能是statusBar屬性。你應該可以刪除「statusBar」。從你的綁定路徑開始,並得到你要的東西。

+0

statusBar屬性是在WindowViewModel中的StatusBarViewModel實例,它綁定到window2.if我寫batIndicatorViewModel.IsLowBattery它會引發錯誤:BindingExpression路徑錯誤:'對象'上找不到'batIndicatorViewModel'屬性WindowViewModel' – suman 2010-07-30 12:27:39

+0

你能發佈更多的代碼嗎?這兩個片段中沒有足夠的東西來表示具體的問題。 – 2010-07-30 15:17:54

+0

我無法發佈整個代碼。 – suman 2010-08-03 06:37:33