C# Listbox控件模板对象正在忽略大小属性
我基本上是WPF C#编程的初学者,很抱歉提出了这个愚蠢的问题 说明:在列表框中,我定义了控制模板。在它的内部还有“PieDiagram”对象。“PieDiagram”对象有一个总是被忽略的属性“Size”-当我在值50上设置例如“Size”时,没有任何变化。我还尝试将ListBox.Template的任何其他“child”设置为固定大小,但随后出现了一个问题,即整个内容都被更改/重新缩放(以及用于设置数量的文本和图表行-请看附件图片) 目标:我想要的是只更改“PieDiagram”对象的大小-因此饼图必须小于线条末端和设置的箭头 若需要了解问题的任何其他问题,请写在评论部分。谢谢 视图中的代码:C# Listbox控件模板对象正在忽略大小属性,c#,listbox,controltemplate,wsh,visualbrush,C#,Listbox,Controltemplate,Wsh,Visualbrush,我基本上是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;
...
}
}
}
我已经解决了这个问题,只需在第一个列表框下添加另一个列表框即可。因此,在第一个列表框中定义了饼图(饼图数量、数据流、宽度和高度)。在第二个列表框中定义了所有其他节点和行。这是我将饼图与其他对象分开并分别定义大小的解决方案。我解决了这个问题,只需在第一个列表框下添加另一个列表框。因此,在第一个列表框中定义了饼图(饼图数量、数据流、宽度和高度)。在第二个列表框中定义了所有其他节点和行。这是我将饼图与其他对象分开并分别定义大小的解决方案。