2014-08-31 4 views
1

Im пытается установить прикрепленное свойство внутри стиля, я хочу использовать их для приведения в действие поведения. Однако я не могу заставить его работать. Heres код:Установить настраиваемое свойство в стиле setter

Attached свойство

public class TestBehaviour 
{ 
    public static bool GetTest(Grid grid) 
    { 
     return (bool)grid.GetValue(TestProperty); 
    } 

    public static void SetTest(Grid grid, bool value) 
    { 
     grid.SetValue(TestProperty, value); 
    } 

    public static readonly DependencyProperty TestProperty = DependencyProperty.RegisterAttached("Test", typeof(bool), typeof(Grid)); 

} 

Xaml

<Window x:Class="AttachedPropertyTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:test="clr-namespace:AttachedPropertyTest" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Grid.Style> 
     <Style TargetType="Grid"> 
      <Setter Property="test:TestBehaviour.Test" Value="true"></Setter> 
     </Style> 
    </Grid.Style> 
</Grid> 

+0

Пытались ли вы со скобками '(тест: TestBehaviour.Test) '? – Pragmateek

+1

@ Прагатетек попробовал только сейчас. Wont компиляция ((тестовое необъявленное пространство имен) также пыталась "(TestBehaviout.Test)" –

ответ

3

Тип владелец вложенного свойства должен быть класс, где она объявлена, что TestBehaviour здесь, не Grid. Измените объявление на:

public static readonly DependencyProperty TestProperty = 
    DependencyProperty.RegisterAttached("Test", typeof(bool), typeof(TestBehaviour)); 

смотрите в документации MSDN для RegisterAttached:

ownerType - тип владельца, который регистрирующий свойство зависимостей

+0

круто работает. –

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