我正在嘗試創建和使用自定義畫布。這裏是XAML(MyCanvas.xaml):定製WPF/XAML畫布
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:Core="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Namespace="clr-namespace:MyNamepace" xmlns:Properties="clr-namespace:MyNamepace.Properties" Core:Class="MyNamepace.MyCanvas">
<Canvas.Resources>
<Namespace:ImagesConverter Core:Key="ImagesConverter"/>
</Canvas.Resources>
<Image Source="{Binding Source={Core:Static Properties:Resources.Background}, Converter={StaticResource ImagesConverter}}" Stretch="Fill"/>
</Canvas>
下面是代碼的聲明(MyCanvas.xaml.cs):
public partial class MyCanvas : Canvas
當我嘗試使用它,像這樣:
<Namespace:MyCanvas Core:Name="Layout" Loaded="OnLoaded">
<Namespace:MyUserControl Core:Name="Control1" Namespace:MyCanvas.Left="50" MyProperty="50">
<Namespace:MyCanvas.Top>
<MultiBinding Converter="{StaticResource MathConverter}" ConverterParameter="(x - y)/2">
<Binding ElementName="Layout" Path="ActualHeight"/>
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}"/>
</MultiBinding>
</Namespace:MyCanvas.Top>
</Namespace:MyUserControl>
<Namespace:MyUserControl Core:Name="Control2" Namespace:MyCanvas.Left="744" Namespace:MyCanvas.Top="42" MyProperty="150"/>
</Namespace:MyCanvas>
我得到兩個不同的錯誤:
屬性「內容」也只能是設置一次。 ==>它不是繼承Canvas嗎?!?!?!
成員「Top」無法識別或無法訪問。 ==>它不是繼承Canvas嗎?!?!?! 成員「左」未被識別或無法訪問。 ==>它不是繼承Canvas嗎?!?!?!
編輯:這是我到目前爲止......仍然得到「內容」已設置的錯誤!
MyCanvas.xaml
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:Core="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Namespace="clr-namespace:MyNamespace" xmlns:Properties="clr-namespace:MyNamespace.Properties" Core:Class="MyNamespace.MyCanvas">
<Canvas.Background>
<ImageBrush ImageSource="{Binding Source={Core:Static Properties:Resources.Background}, Converter={StaticResource ImagesConverter}}" Stretch="Fill"/>
</Canvas.Background>
<Canvas.Resources>
<Namespace:ImagesConverter Core:Key="ImagesConverter"/>
</Canvas.Resources>
</Canvas>
MyCanvas.xaml.cs
public class MyCanvas : Canvas
{
// ...
}
MainWindow.xaml
<Namespace:MyCanvas Core:Name="MyCanvas" Loaded="OnLoaded">
<Namespace:MyUserControl ...
<Namespace:MyUserControl ...
<Namespace:MyUserControl ...
</Namespace:MyCanvas>
好的...但內容問題呢?畢竟這是一個該死的帆布......允許多個孩子! –
@Zarathos:請檢查更新。我沒有測試過這個,但它應該像那樣工作。 –
畫布坐在什麼位置?它只是在窗戶內嗎?或者在另一個網格/畫布內? Canvas不是一個內容控件,所以你不應該得到關於內容的錯誤,因爲它沒有內容屬性。畫布'容器可能是一個持有兩件物品的內容控件。 – sircodesalot