Oyun masası oluşturuyorum. Ekli bir özellik olarak alan boyutunu (bir alan bir karedir) ve 2x2 matrisini çizen ViewPort'un bu veri kümesi değeri ile belirtmek istedim (ve karo modu oyun masasının geri kalanını yapardı).TemplateBinding with Converter - Sorun nedir?
Neyin yanlış olduğu oldukça yanlıştır çünkü ciltleme çalışmıyor.
Ben istiyorum davranışı için XAMLTest hattı:
<DrawingBrush Viewport="0,0,100,100" ViewportUnits="Absolute" TileMode="None">
oyun masası DrawingPaint bu örnek dayanmaktadır: http://msdn.microsoft.com/en-us/library/aa970904.aspx (görüntü buradadır)
XAML:
<Window x:Class="Sokoban.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Sokoban"
Title="Window1" Height="559" Width="419">
<Window.Resources>
<local:FieldSizeToRectConverter x:Key="fieldSizeConverter" />
<Style x:Key="GameDesk" TargetType="{x:Type Rectangle}">
<Setter Property="local:GameDeskProperties.FieldSize" Value="50" />
<Setter Property="Fill">
<Setter.Value>
<!--<DrawingBrush Viewport="0,0,100,100" ViewportUnits="Absolute" TileMode="None">-->
<DrawingBrush Viewport="{TemplateBinding local:GameDeskProperties.FieldSize, Converter={StaticResource fieldSizeConverter}}" ViewportUnits="Absolute" TileMode="None">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="CornflowerBlue">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Azure">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,50,50" />
<RectangleGeometry Rect="50,50,50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel>
<Rectangle Style="{StaticResource GameDesk}" Width="300" Height="150" />
</StackPanel>
</Window>
Dönüştürücü ve mülkiyet tanımı:
Visual Studio'nun çıktı penceresinde bu hatayı buldum: System.Windows.Data Hatası: 2: Hedef öğe için FrameworkElement veya FrameworkContentElement öğesi bulunamıyor. BindingExpression: Yol (= 0); Dataıtem = null; hedef eleman 'DrawingBrush' (HashCode = 35191196); Hedef özellik 'Viewport' ('Rect') 'dir –
Üzgünüm, ayarlamış olduğunuz mülkte yakından bakmadım. Cevabı güncelledim, böylece gerçekten çalışıyor. –
Teşekkürler, önceki örneğinizden öğrendim. –