ControlElement
という名前のMultiImageDevice
があります。この画像は、リスト/ URIの配列で初期化する必要があります。個別のXAMLファイルに画像のURIリストを設定する方法
MultiImageDeviceためのXAML-コード:
<component:AbstractDevice x:Class="View.MultiImageDevice"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
xmlns:component="clr-namespace:View"
x:Name="userControl"
d:DesignHeight="100" d:DesignWidth="100">
<Canvas Initialized="Level1Canvas_Initialized" Height="{Binding ElementName=userControl, Path=ActualHeight}" Width="{Binding ElementName=userControl, Path=ActualWidth}">
<Canvas Initialized="Level2FrameworkElement_Initialized">
<Image x:Name="image" Source="{Binding Path=ImageSources[0], RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type component:MultiImageDevice}}}" Height="{Binding ElementName=userControl, Path=ActualHeight}" Width="{Binding ElementName=userControl, Path=ActualWidth}">
<Image.Effect>
<DropShadowEffect BlurRadius="10" Opacity="0.5" ShadowDepth="3"/>
</Image.Effect>
</Image>
</Canvas>
</Canvas>
</component:AbstractDevice>
と(ディレクティブを使用せずに)C#-code:
namespace View
{
public partial class MultiImageDevice : AbstractDevice
{
private double _currentImage = 1d;
internal string[] ImageURIs { get; set; }
public MultiImageDevice()
{
InitializeComponent();
}
public override void PositionChangedSignal(ComponentIdentifier identifier, double position)
{
if (_currentImage != position)
{
_currentImage = position;
//Switching shall occur here
}
}
}
}
そして最後にではなく、少なくとも別々のXAMLでのコール:
<component:MultiImageDevice Height="60" Canvas.Left="56.104" Canvas.Top="409.859" Width="60">
<component:MultiImageDevice.ImageURIs>
<x:Array Type="sys:String">
<sys:String>
pack://application:,,/img/AuxReleaseCancelButton_pushed.png
</sys:String>
</x:Array>
</component:MultiImageDevice.ImageURIs>
</component:MultiImageDevice>
このアプローチの問題は、私がを追加できないというコンパイラのエラーですからString[]-Type
までである。また、<x:Array>-part
を残してみたり、MultiImageDevice
にResource
という配列を宣言して、新しい問題が発生しました。だから私は今失われている。私はどんな提案にも感謝します。
おかげ
これは、XAML http://msdn.microsoft.com/en-us/library/ms752340.aspxの文字列配列を記述するMSDNページです。名前空間の指定が不足している可能性があります。 –
私はそれを読んで、私は名前空間の仕様を持っています:) – Nessuno
本当にコンパイラエラーが出ますか、それともXAMLエディタの警告ですか?このようなことをしようとすると、XAMLで警告されますが、それでも実行されます。警告を回避するには、配列をコンポーネントのリソースディクショナリに配置します。 – Clemens