Привязка свойства подкласса - PullRequest
0 голосов
/ 30 июля 2010

В WindowViewModel Есть свойство с именем statusBar

В StatusBarViewModel есть свойство с именем public BatteryIndicatorViewModel batIndicatorViewModel

В BatteryIndicatorViewModel есть свойство с именем public bool IsLowBattery

*

Свойство IsLowBattery привязано к CheckBox в window2 и привязано к WindowViewModel

<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: 'statusBar'свойство не найдено в' объекте '' 'StatusBarViewModel' (HashCode = 25431989) '.BindingExpression: Path = statusBar.batIndicatorViewModel.IsLowBattery;DataItem = 'StatusBarViewModel' (HashCode = 25431989);Целевым элементом является ContentControl (Name = '');Свойство target - «NoTarget» (тип «Объект»)


Код .....

Window2.xaml .. У меня есть HeaderedItemsControl в Window2.xaml, который связан срабочие пространства

<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, привязанный к текстовому тексту window2

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

1 Ответ

0 голосов
/ 30 июля 2010

Ошибка говорит вам, что DataContext элемента, в котором используется Binding, уже установлен на StatusBarViewModel, скорее всего, свойство statusBar.Вы должны быть в состоянии удалить «statusBar».с начала вашего Обязательного Пути и получите то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...