WPF: расстояние между элементами в стеке - PullRequest
6 голосов
/ 19 июля 2010

У меня есть стекпанель с флажками. Я не могу сделать такой же интервал между флажками со свойством поля

Может кто-нибудь сказать мне, что я делаю не так?

Код ниже дает мне это:

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>

1 Ответ

4 голосов
/ 19 июля 2010

Я предполагаю, что ваша проблема в вашем свойстве MinWidth = "150". Я думаю, что у вас есть 5 стековых панелей прямо сейчас. У вас есть 4 панели стека, каждая из которых имеет свой собственный флажок. Тогда я предполагаю, что у вас есть панель 5-го стека, содержащая ваши 4 панели стека.

Если это так ... тогда проблема в том, что каждый из ваших флажков находится в панели стека шириной 150 (минимум), но ваша третья панель стека больше 150, потому что текст настолько длинный, что должен быть больше содержать весь текст (плюс ваше поле 20).

Удалите MinWidth = "150", и я думаю, что вы получите поле 20 между текстом каждого флажка. (если вы хотите, чтобы интервал между фактическими полями флажков был одинаковым, вам следует сохранить минимальную ширину, но сделать ее достаточно большой, чтобы она была не меньше ширины флажка, содержащего самый длинный текст).

...