2015-11-19 4 views
0

У меня есть три переключателя привязаны (с Caliburn.Micro) до трех свойств модели. Все свойства кажутся правильными, и я отлаживаю, чтобы увидеть, что выбранное свойство возвращает True, и что элемент управления имеет IsChecked = true, и, как представляется, атрибуты свойств повышаются нормально, но когда я впервые открываю форму, ни одна из переключаемых кнопок не отображается , Если я начну нажимать на них, все будет работать нормально, только при начальной загрузке выбранное значение не будет нажато. Это XAML ...WPF RadioButton, созданный как ToggleButton, не отображающий начальное значение

<RadioButton GroupName="Alignment" Name="FooterLeftAlign" Style="{StaticResource {x:Type ToggleButton}}" Margin="0,0,5,0"> 
    <Image Source="pack://application:,,,/DevExpress.Images.v15.1;component/Images/Format/AlignLeft_16x16.png" Margin="0" /> 
</RadioButton> 
<RadioButton GroupName="Alignment" Name="FooterCenterAlign" Style="{StaticResource {x:Type ToggleButton}}" Margin="0,0,5,0"> 
    <Image Source="pack://application:,,,/DevExpress.Images.v15.1;component/Images/Format/AlignCenter_16x16.png" Margin="0" /> 
</RadioButton> 
<RadioButton GroupName="Alignment" Name="FooterRightAlign" Style="{StaticResource {x:Type ToggleButton}}" Margin="0,0,5,0"> 
    <Image Source="pack://application:,,,/DevExpress.Images.v15.1;component/Images/Format/AlignRight_16x16.png" Margin="0" /> 
</RadioButton> 

А вот свойства ...

public bool FooterLeftAlign { 
     get { 
      return (ScannerSettings.StampOptions.TextAlign == TextAlignment.Left); 
     } 
     set { 
      if (value) { 
       ScannerSettings.StampOptions.TextAlign = TextAlignment.Left; 
       RaisePropertyChanged(() => FooterLeftAlign); 
      } 
     } 
    } 

    public bool FooterCenterAlign { 
     get { 
      return (ScannerSettings.StampOptions.TextAlign == TextAlignment.Center); 
     } 
     set { 
      if (value) { 
       ScannerSettings.StampOptions.TextAlign = TextAlignment.Center; 
       RaisePropertyChanged(() => FooterCenterAlign); 
      } 
     } 
    } 

    public bool FooterRightAlign { 
     get { 
      return (ScannerSettings.StampOptions.TextAlign == TextAlignment.Right); 
     } 
     set { 
      if (value) { 
       ScannerSettings.StampOptions.TextAlign = TextAlignment.Right; 
       RaisePropertyChanged(() => FooterRightAlign); 
      } 
     } 
    } 

У меня даже есть некоторые фактические ToggleButtons на эту форму для Bold, Курсив и т.д ... и они работают хорошо. Я видел множество примеров форсирования пользовательских стилей с помощью триггеров, но я хочу убедиться, что они похожи на другие кнопки переключения. Поскольку я видел другие примеры, очень похожие на это, единственное, что я мог придумать, это тот факт, что у нас есть тема DevExpress, но не удалось найти ничего похожего на изменение этого поведения.

Если у кого-то есть предложения, мы будем очень благодарны.

+2

Те радиокнопок не кажется, IsChecked связан ни к чему ... вы устанавливая их значения где-нибудь еще? –

+0

Жаль спасибо, что указали, что они связаны с помощью Caliburn.Micro. – HiGravity

ответ

0

Вы можете установить ((RadioButton)FooterRightAlign).IsChecked = value, если это код. Если это действительно ситуация с MVVM, вам нужно привязать каждую из ваших радиообъектов к этим bools.

<RadioButton GroupName="Alignment" Name="FooterRightAlign" Style="{StaticResource {x:Type ToggleButton}}" IsChecked="{Binding FooterRightAlign, Mode=TwoWay}" Margin="0,0,5,0"> 
<Image Source="pack://application:,,,/DevExpress.Images.v15.1;component/Images/Format/AlignRight_16x16.png" Margin="0" /> 

+0

Связывание выполняется с CalibrunMicro и, кажется, работает нормально при нажатии кнопок. Я попытался выполнить ручную настройку IsClicked во время загрузки, и, похоже, он не обновил интерфейс. Во время загрузки диалогового окна я вижу, что его запрос на мои свойства и возврат правильных значений, а IsClicked даже кажется верным для элемента управления. Это похоже на то, что в стиле не срабатывает правильно. – HiGravity

+0

((RadioButton) FooterRightAlign) .IsChecked = значение; не будет работать, потому что у вас есть радиокнопки, называемые теми же свойствами, что и свойства bool. – Subliminy

+0

Я не знаком с CalibrunMicro, так что это кажется мне очень чуждым. – Subliminy

Смежные вопросы