2013-02-19 112 views
0

在WPF中,我有一行兩列的網格。基於其他控件動態更改控件屬性

<Grid> 
<Textbox Grid.Column=0> 
    <Validation.ErrorTemplate> 
    <DockPanel> 
    <Image DockPanel.Dock="Right" Margin="20,0,0,0"/> 
    </DockPanel> 
    </Validation.ErrorTemplate> 
</Textbox> 
<Button Grid.Column=1> 
</Button> 

我希望圖像(錯誤圖標)留在按鈕的右側,根據其文本可以有一個可變的大小。有沒有辦法根據按鈕的寬度動態設置圖片的邊距?現在它只是固定到文本框右側的20個像素。

+0

你的意思是你想讓錯誤圖標出現在文本框而不是按鈕! – 2013-02-19 22:37:43

+0

@Sniffer,我希望相對於按鈕放置錯誤圖標,而不是文本框。 – daniely 2013-02-20 15:25:13

回答

0

驗證錯誤模板顯示在特殊的裝飾層中。 如果您需要定位相對於裝飾元素的元素,請在您的XAML中使用AdornedElementPlaceholder類。

+0

我可以將AdornedElementPlaceholder添加到文本框中,但它只是定義了它相對於文本框的位置。但我希望它相對於按鈕控制... – daniely 2013-02-19 21:52:26

+0

然後,您可以嘗試用適用於AdornedElementPlaceholder的邊距抵消裝飾器的位置。這些邊距可以綁定到按鈕的實際高度/寬度。但這是相當脆弱的 – 2013-02-19 22:04:41

0

我不認爲有可能完成你想要的,看到你不能引用數據模板中的元素,除非在模板或樣式中定義了引用的元素。你可以用另一種方式做,see here