#c# #wpf #xaml
#c# #wpf #xaml
Вопрос:
Я работаю над проектом, который позволяет вам просматривать редактируемый XAML. В рамках этого я хотел бы иметь возможность щелкнуть мой предварительный просмотр и перейти к соответствующим частям моего XAML.
В настоящее время я делаю это, вычисляя из всех RowDefinitions
/ ColumnDefinitions
какой размер "*"
, чем используя эти размеры, чтобы выяснить, где произошел щелчок в Grid
. Я сталкиваюсь с проблемами, когда достигаю "Auto"
размера.
Я знаю, что вы можете использовать XamlReader.Parse()
для создания дерева объектов из XAML, проанализировать его в объект верхнего уровня, и если этот объект является a FrameworkElement
или a UIElement
, вы можете использовать ActualWidth
/ ActualHeight
или Measure()
, чтобы выяснить, насколько велик объект (w / size "Auto"
) на самом деле.
Моя проблема связана с тем фактом, что я действительно имею дело только с XmlElement
и XmlNode
(и) для анализа через мой XAML. Я не могу использовать один из них для FrameworkElement
использования .Parse()
, потому что они не являются элементами верхнего уровня, и некоторые из них требуют ресурсов, определенных в элементе верхнего уровня.
Любые мысли / идеи о том, как я могу получить ActualWdith
/ ActualHeight
или вычислить, что "Auto"
находится в C # codebehind?
РЕДАКТИРОВАТЬ: конкретный сценарий из XAML, с которым я работаю, немного упростил.
<root>
<!-- resources here -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="252" />
<RowDefinition Height="77" />
<RowDefinition Height="168" />
<RowDefinition Height="170" />
<RowDefinition Height="85" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <!-- How big is this? -->
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ContentControl Content="{ns:Foo Name=A}" />
<ContentControl Grid.Row="1" Content="{ns:Foo Name=B}" />
</Grid>
</Grid>
</Grid>
</root>
Комментарии:
1. Я не думаю, что вы получите большую помощь, если не опубликуете какой-нибудь соответствующий код и пример XAML, который вы пытаетесь проанализировать, или что-то в этом роде.
2. @HighCore дело в том, что это должно быть в состоянии работать для «любого» XAML. Но я все равно опубликовал конкретный пример