Моя проблема кажется довольно простой, но я не могу ее решить, я потратил на нее один день ...
У меня есть DataGrid, и я хочу иметь возможность включать / отключать TextWrapping накаждый столбец.Обтекание включается с использованием свойства DependencyProperty из контроллера.
Кажется, мой путь привязки не подходит из-за "datacontext".
Каким будет хороший путь привязки?
Вот фрагмент кода:
Свойство DependencyProperty в контроллере:
public class ControlerDataConsult : DependencyObject
{
public static readonly DependencyProperty SelectDataList_Column0IsWrappingProperty = DependencyProperty.Register("SelectDataList_Column0IsWrapping", typeof(TextWrapping), typeof(ControlerDataConsult), new UIPropertyMetadata(TextWrapping.NoWrap));
}
"ControlerDataConsult" используется как DataContext для страницы XAML.
Xaml в DataGrid.
<dg:DataGrid CanUserSortColumns="False" IsReadOnly="True" Name="SelectedList" SelectionMode="Extended" SelectionChanged="SelectedList_SelectionChanged"
HeadersVisibility="Column" Margin="5,14,5,-4" GridLinesVisibility="all" AutoGenerateColumns="False" ItemsSource="{Binding Path=SelectDataList}"
BorderThickness="1" BorderBrush="{DynamicResource clBLACK}" Loaded="SelectedList_Loaded" >
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Width="50" Header="" HeaderStyle="{StaticResource DataGridHeaderStyle}" Binding="{Binding Index}"/>
<dg:DataGridTextColumn Visibility="{Binding (FrameworkElement.DataContext).SelectDataList_Column0IsVisible, RelativeSource={x:Static RelativeSource.Self},Converter={StaticResource VisibilityConverter}}"
Header="{Binding (FrameworkElement.DataContext).SelectDataList_Column0Title, RelativeSource={x:Static RelativeSource.Self}}"
HeaderStyle="{StaticResource DataGridHeaderStyle}" Binding="{Binding Col0}">
<dg:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="{Binding (FrameworkElement.DataContext).SelectDataList_Column0IsWrapping, RelativeSource={x:Static RelativeSource.Self}}" />
</Style>
</dg:DataGridTextColumn.ElementStyle>
</dg:DataGridTextColumn>
</dg:DataGrid.Columns>
</dg:DataGrid>
Если я попробую это: <Setter Property="TextWrapping" Value="True" />
, он работает как положено.
Я пробую несколько привязок и могу получить хорошую.
Во время выполнения я получил эту ошибку:
Ошибка пути BindingExpression: свойство 'SelectDataList_Column0IsWrapping' не найдено в 'object' '' DataRowView '(HashCode = 4892154)'.BindingExpression: Path = (FrameworkElement.DataContext) .SelectDataList_Column0IsWrapping;DataItem = 'TextBlock' (Name = '');целевым элементом является TextBlock (Name = '');Свойство target - TextWrapping (тип TextWrapping)
Если у вас есть предположение, вы спасете меня:)
Спасибо,