2010-06-23 2 views
2

Например, я создал кнопку с отмеченной на ней галочкой. Мне нужно использовать его в нескольких местах в моем окне.Можно ли повторно использовать элементы управления WPF?

<Button Width="25"> 
    <!-- Draw a Green checkmark --> 
    <Polyline Points="2,5,6,10,13,1" Stroke="Green" StrokeThickness="4" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round" /> 
</Button> 

Поскольку я хочу изменить контент, я не уверен, что применяются стили или шаблоны. Нужно ли создавать UserControl?

Редактировать: Это может быть выполнено в стиле. Но я хочу изменить контент, и я не хочу переопределять текущий стиль.

+0

Вы лучше можете использовать стиль здесь, так что вам не нужно пойти и изменить все кнопки, когда происходит изменение. – Amsakanna

ответ

1

Это крик для стиля. Добавьте следующий стиль к вашему Window.Resources:

<style TargetType="Button" x:Key="tick"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Polyline Points="2,5,6,10,13,1" Stroke="Green" StrokeThickness="4" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round" /> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

, а затем вы можете определить кнопку как:

<Button Width="25" Style="{StaticResource tick}" /> 
+0

Этот стиль соответствует требованиям, но он отбрасывает любой контент, поставляемый для кнопки, используя стиль. Это хорошее решение, однако, поскольку вы всегда можете изменить шаблон, чтобы включить ContentPresenter позже. Например, вы можете создать горизонтальную StackPanel с Polyline, за которой следует ContentPresenter, и теперь вы можете при желании добавить текст (или любой другой контент) к любой кнопке стиля «tick». –

+0

Это очень хороший момент - я работал над этим. Добавление презентатора контента было бы приятной особенностью. –

+0

Спасибо. Но в моем приложении уже есть стили, применяемые к нему. Когда я применяю этот стиль, я теряю все это. Есть ли способ обойти это? – TheSean

2

Создайте UserControl с содержимым кнопки, которую вы создали, если хотите, чтобы у вас была какая-то динамическая возможность, то есть добавьте новые свойства. Если у вас есть только кнопка, которая имеет визуальный внешний вид, чтобы иметь чек, я бы использовал стиль.

0

Создайте UserControl с содержимым кнопки вы создали. Самый простой способ создать пользовательский элемент управления - использовать Expression Blend. Выберите все наши элементы управления, которым вы хотите сделать UserControl. Щелкните правой кнопкой мыши и выберите «make into Usercontrol». Это оно. U может использовать этот элемент управления в любом месте вашего проекта, просто перетаскивая его.

Надеется, что это поможет U,

Saghar Ayyaz

Смежные вопросы