私はイメージを表示する単純なusercontrolを作って、最終的にはWPFアプリケーションのボタンとして動作させようとしています。この画像をWPFのユーザコントロールに表示するにはどうすればいいですか?
これらのユーザーコントロールの1つがフォームのXAMLに書き込まれ、イメージが常に表示されました。しかし、プログラムをスタックパネルに追加すると、コントロールはそこにありましたが、イメージは表示されませんでした。 (シンプルですが、この例のために働く)私はImageSourceは型の依存関係プロパティとしてSourceプロパティを設定
<UserControl x:Class="ImgButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
MinHeight="32" MinWidth="32"
x:Name="uc_ImgButton">
<Border BorderBrush="Gray" BorderThickness="2">
<Image Source="{Binding ElementName=uc_ImgButton, Path=Source}" x:Name="img"/>
</Border>
</UserControl>
:ここ
はUserControlのここPartial Public Class ImgButton
Public Property Source() As ImageSource
Get
Return GetValue(SourceProperty)
End Get
Set(ByVal value As ImageSource)
SetValue(SourceProperty, value)
End Set
End Property
Public Shared ReadOnly SourceProperty As DependencyProperty = _
DependencyProperty.Register("Source", _
GetType(ImageSource), GetType(ImgButton))
End Class
の例ですどのようにプログラムでVBでプログラムを追加するのですか?
Dim newBtn As New myApp.ImgButton
newBtn.Width = 100
newBtn.Height = 100
Dim bi As New BitmapImage
bi.BeginInit()
bi.UriSource = New Uri("C:\test.png", UriKind.RelativeOrAbsolute)
bi.EndInit()
'MsgBox(bi.Width) '(a simple debug test I added)
newBtn.Source = bi
Me.StackPanelMain.Children.Add(newBtn)
上記の画像はエラーなく表示されますが、私のフォーム上の結果は、画像が表示されていない空の枠です。
ただし、MsgBox行をコメント解除すると、イメージが表示されます。 BitmapImageからいくつかの価値を得るように強制するのと同じように動作します。私はまた、MsgBoxラインを "dim x as integer = bi.PixelWidth"のような無知なものに置き換えようとしました。そして、ALSOは画像を表示しました。私はそれを取り除くと、私のフォーム上にイメージはありません。
私は何かが不足していると思うか、何か分かりません。私はアプリで一見無意味なコード行を残すのではなく、何が起こっているのかを知りたい。
私のWPF体験のこの時点で、私の仕事の多くは、私がオンラインで見つけたコードスニペットに基づいています。私は、その中に表示されている画像を変更するために設定できるプロパティを持つusercontrolがほしいだけです。これを実現するためのよりよい方法があれば、有料で無料で共有してください。私は学びたい:-)私はあなたの提案を理解していません...サンプルコードが役に立ちます。 –
余分なコードをありがとう、私は周りに遊びます。私は、データバインディングステートメントをXAMLでどのように記述するべきか、特定のバインド方法を使用するのが適切であるかどうかを理解することは常に困難でした。 –
ハングアップするにはしばらく時間がかかります。 VS2010では、マークアップの拡張(バインディングを含む)のためのインテリセンスがありますので、うまくいけば学習曲線に役立ちます。 – Andy