Как получить доступ к пользовательскому элементу управления в данной ячейке сетки XAML? - PullRequest
0 голосов
/ 27 января 2020

У меня есть сетка XAML для моего проекта WPF, которая находится на странице MonthPage.xaml с содержимым, как показано ниже

    <Page x:Class="Calander.Views.pages.MonthPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:Calander"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="Page1">

    <Grid x:Name="month">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
        </Grid.RowDefinitions>
        <local:day Grid.Row="0" Grid.Column="0"/>
        <local:day Grid.Row="0" Grid.Column="1" />
        <local:day Grid.Row="0" Grid.Column="2" />
    </Grid>
</Page>

Я дал сетке x: name "month" и в каждом ячейка Я добавил пользовательский элемент управления с именем day, вот код xaml foy day.xaml:

<UserControl x:Class="Calander.day"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Calander"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <Button Background="White" BorderThickness="0 1 0 0" x:Name="cellbutton"/>    
    </Grid>
</UserControl>

Вы можете видеть, что в моем дневном пользовательском элементе управления есть кнопка. Теперь мой вопрос заключается в том, как я могу использовать x: имя моей сетки (я назвал ее «месяц») в MonthPage.xaml.cs, чтобы изменить содержимое кнопки для каждого дня пользовательского элемента управления в сетке, используя код c#. Мой код sudo выглядит примерно так:

month.Children.Gridindex(column, row).day.button.content = "somestring"

1 Ответ

1 голос
/ 27 января 2020

Сначала вам нужно найти элемент дня в коллекции Grid Children на основе его значений Grid.Row и Grid.Column, а затем вы можете использовать метод FindName, чтобы получить ссылку на Button.

Попробуйте:

int row = 0;
int column = 1;
day day = month.Children.OfType<day>().FirstOrDefault(x => Grid.GetRow(x) == row && Grid.GetColumn(x) == column);
if (day != null)
{
    Button button = day.FindName("cellbutton") as Button;
    if (button != null)
    {
        button.Content = "something";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...