WPF: захват XAML в подклассе управления - PullRequest
0 голосов
/ 14 июня 2010

Я сузил то, что я хочу, чтобы моя кнопка wpf выглядела при использовании XAML.

теперь я хотел бы создать субклассифицированный кнопочный элемент управления, который я могу просто использовать повторно без необходимости писать всю эту разметку

<Button Click="TestGridColumnButton_Click" Background="Transparent" Width="16" Height="16" Margin="0,0,0,0" Padding="0,0,0,0" BorderBrush="{x:Null}">
    <Button.Template>
        <ControlTemplate>
            <Image HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource SourceStyle}" />
        </ControlTemplate>
    </Button.Template>
</Button>

как я могу установить все эти свойства, используяC #?

Ответы [ 2 ]

3 голосов
/ 14 июня 2010

Создайте стиль для своей кнопки и добавьте в глобальный словарь ресурсов.

<Application x:Class="TestApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="Window1.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <Style x:Key="MyIconButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Transparent" />
                <Setter Property="Width" Value="16" />
                <Setter Property="Height" Value="16" />
                <Setter Property="Margin" Value="0,0,0,0" />
                <Setter Property="Padding" Value="0,0,0,0" />
                <Setter Property="BorderBrush" Value="{x:Null}" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Image HorizontalAlignment="Center" VerticalAlignment="Center" Source="buttonImage.jpg"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Используйте стиль, подобный этому:

  <Button Style="{StaticResource MyIconButtonStyle}" Click="Button_Click"/>
0 голосов
/ 14 июня 2010

Есть несколько способов сделать это:

[Примечание: ради этого ответа я предполагаю, что вы создаете кнопку в простом окне.]

1) Не допускающий многократного использования и грязный способ - назначить все свойства в загруженном событии окна. Называя объект кнопки, вы можете получить ссылку на него и присвоить значения свойствам, зарегистрироваться на событие и назначить шаблон. Я предполагаю, что у вас были проблемы со свойствами шаблона. Чтобы создать шаблон в коде, вы можете либо использовать FrameworkElementFactory class (что устарело), ​​либо использовать метод XamlReader.Load (это предпочтительный подход).

2) Создайте пользовательский элемент управления, для которого в файле generic.xaml создается пользовательский шаблон. Вы можете называть элементы в пользовательском шаблоне и получать ссылки на них, переопределяя метод OnApplyTemplate. Затем вы можете создать общедоступные свойства, которые напрямую отображаются на элемент Image в шаблоне, или выставить элемент Image в качестве публичного свойства в элементе управления. Используя этот подход, вы можете установить свойства в коде C #, используя ваши открытые свойства.

3) Вы также можете определить несколько стилей и переключаться между ними в коде c #. Этот метод работает так же, как в HTML, когда мы переключаем классы с помощью JavaScript.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...