kida atlantis Ответов: 2

В WPF шаблон данных DataTemplate не привязки стоимости недвижимости


У меня есть одно групповое поле с заголовком, которое должно отображать текст с кнопкой в xaml. настройка видимости кнопки заголовка с помощью свойства IsbtnVisibility, определенного в моем viewmodel.
IsbtnVisibility 
это свойство bool. когда он ложен, кнопка должна коллапсировать, но она работает не так, как ожидалось. Есть ли какой-нибудь способ решить эту проблему?

Что я уже пробовал:

<GroupBox Grid.Row="0" Padding="3,5,3,3">

                                              <GroupBox.HeaderTemplate>
                                                  <DataTemplate>
                                                      <StackPanel Orientation="Horizontal" >
                                                          <TextBlock Text="Sample Header " FontWeight="Bold"/>
                                                          <UserCntrl:RoundedButton x:Name="btnRoundedButton" Visibility="{Binding Path=IsbtnVisibility,Converter={StaticResource FalseToCollapsedConverter}}"/>
                                                      </StackPanel>
                                                  </DataTemplate>
                                              </GroupBox.HeaderTemplate>
                                              </GroupBox>

2 Ответов

Рейтинг:
2

Dirk Bahle

Видите ли вы ошибку BindingExpression, отображаемую в окне вывода при выполнении проекта в Visual Studio?

в C# - ошибка в WPF 40 BindingExpression путь ошибка: имущество не нашел на 'объект' - переполнение стека[^]

Если да, то это, вероятно, то, что вы хотите посмотреть на исправление.

Если нет, то вы можете использовать преобразователь Boolean в Boolean в привязке, с которой у вас возникли проблемы. Просто установите точку останова в преобразователе, чтобы увидеть фактические значения, передаваемые вперед и назад между представлением и источником данных...

Учебник WPF | проблемы с отладкой привязки данных[^]


kida atlantis

Я не видел никаких ошибок в окне вывода. Я использую одно и то же значение свойства и bool для управления конвертером видимости.Та же самая логика работает нормально, но где как groupbox с заголовком та же самая логика не работает нормально.

Рейтинг:
12

Richard Deeming

То HeaderTemplate имеет свои собственные DataContext, поэтому вы не можете напрямую привязываться к свойствам родительского объекта DataContext. Если вы изучите окно вывода, то увидите ошибки, сообщающие вам, что свойство не было найдено.

Вы должны использовать RelativeSource привязка для доступа к родительскому элементу DataContext:

<UserCntrl:RoundedButton x:Name="btnRoundedButton" 
    Visibility="{Binding Path=DataContext.IsbtnVisibility,
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GroupBox}}, Converter={StaticResource FalseToCollapsedConverter}}"
/>

WPF GroupBox HeaderTemplate и DataBinding - переполнение стека[^]


kida atlantis

Это сработало как шарм ... спасибо