C# Listbox控件模板对象正在忽略大小属性

C# Listbox控件模板对象正在忽略大小属性,c#,listbox,controltemplate,wsh,visualbrush,C#,Listbox,Controltemplate,Wsh,Visualbrush,我基本上是WPF C#编程的初学者,很抱歉提出了这个愚蠢的问题 说明:在列表框中,我定义了控制模板。在它的内部还有“PieDiagram”对象。“PieDiagram”对象有一个总是被忽略的属性“Size”-当我在值50上设置例如“Size”时,没有任何变化。我还尝试将ListBox.Template的任何其他“child”设置为固定大小,但随后出现了一个问题,即整个内容都被更改/重新缩放(以及用于设置数量的文本和图表行-请看附件图片) 目标:我想要的是只更改“PieDiagram”对象的大小-

我基本上是WPF C#编程的初学者,很抱歉提出了这个愚蠢的问题

说明:在列表框中,我定义了控制模板。在它的内部还有“PieDiagram”对象。“PieDiagram”对象有一个总是被忽略的属性“Size”-当我在值50上设置例如“Size”时,没有任何变化。我还尝试将ListBox.Template的任何其他“child”设置为固定大小,但随后出现了一个问题,即整个内容都被更改/重新缩放(以及用于设置数量的文本和图表行-请看附件图片)

目标:我想要的是只更改“PieDiagram”对象的大小-因此饼图必须小于线条末端和设置的箭头

若需要了解问题的任何其他问题,请写在评论部分。谢谢

视图中的代码:

<Grid>
    <!--  Diagram  -->
    <ListBox
        x:Name="LstBox"
        PreviewMouseRightButtonDown="ListBox_PreviewMouseRightButtonDown"
        RenderTransformOrigin="0.5,0.5">

        <ListBox.LayoutTransform>
            <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
        </ListBox.LayoutTransform>
        <ListBox.RenderTransform>
            <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1" ScaleY="1" />
        </ListBox.RenderTransform>

        <ListBox.Template>
            <ControlTemplate>
                <Border>
                    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                        <Border>
                            <Border.Background>
                                <VisualBrush>
                                    <VisualBrush.Visual>
                                        <pie:MultiPieChart
                                            x:Name="chart1"
                                            HorizontalAlignment="Center"
                                            VerticalAlignment="Center"
                                            DataBrushes="{Binding DataBrushes, UpdateSourceTrigger=PropertyChanged}"
                                            DataList="{Binding PieDataCol, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                                            Size="50">
                                            <pie:MultiPieChart.LayoutTransform>
                                                <RotateTransform Angle="180" CenterX="0.5" CenterY="0.5" />
                                            </pie:MultiPieChart.LayoutTransform>
                                            <pie:MultiPieChart.RenderTransform>
                                                <ScaleTransform CenterX="0.5" CenterY="0.5" />
                                            </pie:MultiPieChart.RenderTransform>
                                        </pie:MultiPieChart>
                                    </VisualBrush.Visual>
                                </VisualBrush>
                            </Border.Background>
                            <ItemsPresenter />
                        </Border>
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </ListBox.Template>

        <ListBox.ItemsSource>
            <StaticResource ResourceKey="DiagramCol" />
        </ListBox.ItemsSource>

        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas
                    Width="{Binding AreaWidth}"
                    Height="{Binding AreaHeight}"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    IsItemsHost="True">
                    <Canvas.RenderTransform>
                        <TranslateTransform X="{Binding HalfAreaWidth}" Y="{Binding HalfAreaHeight}" />
                    </Canvas.RenderTransform>
                </Canvas>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>

        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="Canvas.Left" Value="{Binding X}" />
                <Setter Property="Canvas.Bottom" Value="{Binding Y}" />
                <Setter Property="Canvas.ZIndex" Value="{Binding ZindexBinding}" />

                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <ContentPresenter x:Name="Content" />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>
</Grid>
<UserControl
    ...>
    <Control.Template>
        <ControlTemplate TargetType="{x:Type pie:MultiPieChart}">
            <Image x:Name="PART_PieChart" RenderOptions.BitmapScalingMode="NearestNeighbor" />
        </ControlTemplate>
    </Control.Template>
</UserControl>
private Image _pieChartImage;

public static readonly DependencyProperty SizeProperty = DependencyProperty.Register("Size", 
typeof(double), typeof(MultiPieChart), new PropertyMetadata(100.0, OnPiePropertyChanged));

public double Size
{
    get { return (double)GetValue(SizeProperty); }
    set { SetValue(SizeProperty, value); }
}

private void CreatePieChart()
{
    if (_pieChartImage != null)
    {
        if (!double.IsNaN(Size) && DataList != null && DataList.Any())
        {
            _pieChartImage.Width = _pieChartImage.Height = Width = Height = Size;
           ...
        }
    }
}

我已经解决了这个问题,只需在第一个列表框下添加另一个列表框即可。因此,在第一个列表框中定义了饼图(饼图数量、数据流、宽度和高度)。在第二个列表框中定义了所有其他节点和行。这是我将饼图与其他对象分开并分别定义大小的解决方案。我解决了这个问题,只需在第一个列表框下添加另一个列表框。因此,在第一个列表框中定义了饼图(饼图数量、数据流、宽度和高度)。在第二个列表框中定义了所有其他节点和行。这是我将饼图与其他对象分开并分别定义大小的解决方案。