2011-01-02 4 views
1

저는 연결된 속성을 사용하여 작업했으며 흥미로운 이론적 질문을 생각해 냈습니다.하위 클래스가 붙어있는 연결된 속성의 접두사는 무엇입니까

<control ownerClass.propertyName="some value"/> 

내 질문은, 내가 "ownerClass"에서 클래스를 파생 경우 발생하는 : 내가 XAML을 통해 연결된 속성을 설정하려면, 나는 형식을 사용하는 것을 알고있다. 나는 다음과 같은 클래스를 정의 예를 들어, :

<MyGrid> 
    <Button MyGrid.Row = "0">Bla Bla</Button> 
</MyGrid> 

을 다음과 같이

class MyGrid : Grid { 
} 

는 XAML를 통해 설정하려고하지만 인텔리 나를하지 않았다. 첨부 된 속성에 적절한 네임 스페이스를 사용하면 제대로 작동합니다.

또한, 내가이 작업을 수행 할 수 다음 연결된 속성이 그리드 클래스의 정적 멤버이며 의해 정의 된 이후

<MyGrid> 
    <Button Grid.Row = "0">Bla Bla</Button> 
</MyGrid> 

그것은 물론, 의미가 있습니다. 여기서 유일한 문제는 새 클래스의 사용자가 Grid에서 파생되었음을 알게되고이 특정 속성이 조상에 의해 정의되었음을 알 수 있습니다. 내게는 이것이 내 클래스의 사용자에게 공개하고 싶지 않은 구현 세부 사항 인 것 같다.

WPF를 으로 가져 오는 방법이 있습니까이 속성이 실제로 수퍼 클래스에 의해 정의되었다는 것을 숨길 수 있습니까?

감사합니다,

코비

+0

그냥 명확히하기 위해, Meleak (즉에 대한 thnx, Meleak) 원래의 문제를 해결 한,하지만 방법이 있는지 아직도 궁금 오전에 "숨기기"구현 세부 사항 사용자가 슈퍼 클래스 접두어를 사용하여 연결된 속성에 액세스하는 것을 허용하지 않습니다. 앞으로 구현을 변경하여 Grid 클래스를 수퍼 클래스로 사용하지 않는다면 여전히 동일하게 작동해야하므로 사용자가이 클래스가 클래스에서 상속 받았다는 사실에 노출되지 않는 것이 좋습니다. Grid 클래스. –

+0

Intellisence에서 Grid.Row를 숨기고 싶습니까? 아니면 Grid.Row 또는 둘 다의 기능을 비활성화 하시겠습니까? –

답변

2

은 내가 문제를 볼 모르겠어요. 나는 이것을 시험해 보았다. 또한, 인텔리 시스가 작동하고있었습니다. 어떤 .NET 버전을 사용하고 있으며 어떤 버전의 VisualStudio를 사용하고 있습니까? 나는 .NET 4.0과 VS2010

와 함께이 시도
<local:MyGrid> 
    <local:MyGrid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
    </local:MyGrid.ColumnDefinitions> 
    <Button local:MyGrid.Column="1" Content="Button1"/> 
    <Button local:MyGrid.Column="0" Content="Button2"/> 
</local:MyGrid> 

public class MyGrid : Grid 
{ 
    public MyGrid() { } 
} 
+0

실제로 맞습니다. 그것은 속성 자체에 대해 올바른 네임 스페이스를 사용하지 않았다. –

+0

@ Kobi 하리 : 그래 :) 당신이 그것을 다행으로 기쁘게 생각합니다! –

+0

고마워 :-). 그러나 나는 여전히 "Grid.Row"가능성을 숨기는 방법을 찾고있다. 파생 클래스를 다른 클래스와 마찬가지로 사용하고 2 가지 다른 방식으로 액세스 할 첨부 된 속성을 사용하지 않기를 바란다. 왜냐하면 필자가 직접 구현 한 것이 아닌 Grid에서 클래스를 파생시키기 때문입니다. 어떻게 할 수 있는지 알고 있습니까? –

관련 문제