У меня есть проект uwp, в котором есть функция бронирования, и я был бы рад получить некоторую помощь по одной вещи.
Так что я пытаюсь достичь Rectangle
в моем UserControl
измой Main.xaml.cs
файл, так что я могу установить свойство Rectangles
fill.
Вот как я это сделал:
Метод в Main.xaml.cs
для поиска дочернего свойства:
private DependencyObject FindChildControl<T>(DependencyObject control, string ctrlName)
{
int childNumber = VisualTreeHelper.GetChildrenCount(control);
for (int i = 0; i < childNumber; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(control, i);
FrameworkElement fe = child as FrameworkElement;
// Not a framework element or is null
if (fe == null) return null;
if (child is T && fe.Name == ctrlName)
{
// Found the control so return
return child;
}
else
{
// Not found it - search children
DependencyObject nextLevel = FindChildControl<T>(child, ctrlName);
if (nextLevel != null)
return nextLevel;
}
}
return null;
}
Внутри функции, где я хочу вызвать Rectangle
с именем StatusColor
, я делаю это:
Rectangle Rec = FindChildControl<Rectangle>(GridView1, "StatusColor") as Rectangle;
Но как-то, когда я пытаюсь выполнить код, я получаю этоошибка для переменной Rec
:
System.NullReferenceException: 'Ссылка на объект не установлена для экземпляра объекта.'
Я знаю, что есть много сообщений оэто исключение, но я все еще не становлюсь умнее, глядя на них ...
Но, как я уже сказал, я был бы очень рад, если кто-то поможет
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Мой xaml
в Main.xaml
, чтобы объявить UserControl
:
<GridView x:Name="GridView1" ItemContainerStyle="{StaticResource testgrid}" ItemsSource="{x:Bind Rooms}" Width="1740" Height="835" IsHitTestVisible="False" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Margin="75,190,75,100" FontFamily="Segoe MDL2 Assets" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:Room">
<local:TemplateGrid x:Name="TemplateGrid"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
И вот так выглядит мой коддля Rectangle
:
<Rectangle x:Name="StatusColor" x:FieldModifier="public" Margin="0,0,0,0" Height="218" VerticalAlignment="Top">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#00000000" Offset="0.901"/>
<GradientStop Color="#CC17FF00" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>