2010-07-19 144 views
5

我有一個帶有複選框的堆疊面板。 我似乎不能使具有保證金屬性的複選框之間的間距相同WPF:堆疊面板中元素之間的間距

有些人可以告訴我我做錯了什麼?

下面的代碼給了我這樣的:

http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png

正如你所看到的,元件之間的間隔不是恆定的!

<StackPanel MinWidth="150" cal:Bind.Model="{Binding}" Orientation="Horizontal"> 
    <StackPanel.Resources> 
     <Style TargetType="{x:Type CheckBox}"> 
      <Setter Property="Margin" Value="0,0,20,0"/> 
     </Style> 
    </StackPanel.Resources> 
    <CheckBox IsChecked="{Binding IsShown}" Content="{Binding ModuleName, Converter={StaticResource localizeModuleAndFunctionConverter}}" 
       cal:Message.Attach="[Event Click] = [Action FilterShownModuleFunctions]" /> 
</StackPanel> 
+0

你可以在這裏附上圖像嗎? – Amsakanna 2010-07-19 11:44:58

+0

您確定複選框位於StackPanel內嗎?你可以檢查是否有複選框定義的全局樣式? – Ragunathan 2010-07-19 12:17:47

+1

這個StackPanel是「獨立的」還是它是某種ItemsControl的面板?你只在你的例子中顯示一個複選框,所以很難說出圖像與代碼的匹配程度。 – 2010-07-19 14:16:03

回答

4

我猜你的問題是你的MinWidth =「150」屬性。我認爲你現在總共有5個堆疊面板。你有4個堆疊面板,每個面板都有自己的複選框。然後我假設你已經有了第5個堆棧面板來存放你的4個堆棧面板。

如果是這樣的話......那麼問題是,每個複選框都在150寬度(最小)的堆疊面板,但你的第三個堆疊面板大於150,因爲文本很長,所以它必須是包含整個文本的大小(加上20的邊距)。

刪除MinWidth =「150」,我認爲您將在每個複選框的文本之間獲得20的邊距。 (如果您希望複選框的實際框之間有均勻間距,則應保持最小寬度,但要使其足夠大,至少與包含最長文本的複選框一樣寬)。

+0

啊,好猜。我沒有這麼想 - 我假設了一對多的StackPanel與CheckBoxes的比例,並不是每個CheckBox都是獨立的。我想這會引起「爲什麼?」的問題。但這不是什麼在這裏被問...... :) – 2010-07-19 14:51:52

+0

thanx很多。我正在改變MinWidth道具,但它沒有幫助。刪除它確實有幫助,因爲我想在文本之間的邊距而不是實際的複選框。 在我做另一個問題之前,也許我可以問這裏... 我想擺脫按鈕的設置寬度。根據整個應用程序中的文本來調整按鈕大小的方法是什麼? 這就是一個問題......第二個是如果我有三個按鈕旁邊eachother,我如何設置所有相同的寬度(最大的按鈕的寬度)。希望我有道理... – no9 2010-07-20 06:35:01

+0

沒關係,我用uniformgrid解決了它! – no9 2010-07-20 08:33:29