Моя проблема похожа на эту;
За исключением того, что я хотел бы, чтобы детали строк никогда не превышали ширинуиз столбцов, которые он охватывает.
|--0--|--1--|--2--|--3--|--4--|
|---------Row-Details---------|
Я пробовал AreRowDetailsFrozen
, и это не имело никакого эффекта.Я также пытался привязать к фактической ширине родительской сетки (OneWay), но это приводит к тому, что ширина превышает ширину двух моих экранов.
Вот моя текущая попытка (упрощенно);
<Grid>
<DataGrid x:Name="Grid"
Grid.Row="1"
ItemsSource="{Binding Collection}"
IsReadOnly="True"
AutoGenerateColumns="False"
ColumnWidth="Auto"
CanUserResizeColumns="False"
CanUserResizeRows="False"
RowDetailsVisibilityMode="VisibleWhenSelected"
AreRowDetailsFrozen="True"
SelectionUnit="FullRow"
VerticalAlignment="Top"
HorizontalAlignment="Center">
<DataGrid.RowDetailsTemplate>
<!-- Begin row details section. -->
<DataTemplate>
<TextBox DataContext="{Binding ErrorMessage}"
IsReadOnly="True"
Margin="5"
BorderBrush="Transparent"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True"
TextWrapping="Wrap"
Text="{Binding .}">
</TextBox>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
Это приводит к следующему:
|--0--|--1--|--2--|--3--|--4--|
|---------Row-Details are as wide as the longest row in their content ---------|
Привязка ширины TextBox к любому родительскому контейнеру (Grid, DataGrid, ItemsPresenter):
Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}, Path=ActualWidth, Mode=OneWay}"
Результат:
|------Viewable Area-------|
|---- Columns ----|
|---------Row-Details --------------------------------------------------------------|
Это очень расстраивает, я просто хочу, чтобы Детали строк не меняли ширину DataGrid, это так много, чтобы спросить?:)