2017-11-07 13 views
0

ボタンの内側の画像を右に揃えようとしています。しかし、それは私がそれがしたいものをやっていないようです。私は今数時間努力してきたので、ここで尋ねる時が来たと思う。これは私のコードatmです。ボタン内の画像をプログラム内で右に揃えるWPF

public class DirectoryButton : Button 
{ 
    public DirectoryButton(string name, string content) 
    { 
     Name = name.Replace(" ", ""); 
     //Content = new BitmapImage(new Uri("../Resources/folder-icon.png", UriKind.Relative)) + content; 
     //Content = new BitmapImage(new Uri("../Resources/folder-icon.png", UriKind.Relative)); 
     var img = new BitmapImage(new Uri("../Resources/folder-icon.png", UriKind.Relative)); 

     var sp = new UniformGrid 
     { 
      HorizontalAlignment = HorizontalAlignment.Stretch, 
      VerticalAlignment = VerticalAlignment.Stretch, 
      Columns = 3, 
      Rows = 1 
     }; 
     sp.Children.Add(new Label()); 
     sp.Children.Add(new Label { Content = content, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }); 
     sp.Children.Add(new Image { Source = img, HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center}); 
     //sp.Orientation = Orientation.Horizontal; 
     Content = sp; 
     //Content = content; 
     Margin = new Thickness(0, 5, 0, 5); 
     Height = 65; 
     Width = 350; 
     FontWeight = FontWeights.Bold; 
     Foreground = new SolidColorBrush(Colors.Black); 
     Background = new SolidColorBrush(Colors.Gray); 
     HorizontalContentAlignment = HorizontalAlignment.Center; 
     VerticalAlignment = VerticalAlignment.Center; 
     Visibility = Visibility.Visible; 
    } 
} 

button Image

これは、ボタンの画像が表示されますが、それは右にではありません。すべてがプログラマチックに作られているので、私は実際にxamlで何もできません。

よろしく、

ビョルンStretchからHorizontalContentAlignmentを設定

+0

を使用できるようにしたい場合は?それは私のためにうまくいくようです。 – mm8

+0

ここに画像を簡単に追加する方法はありますか?または画像のサイト​​にアップロードする必要がありますか? –

+0

https://meta.stackexchange.com/questions/75491/how-to-upload-an-image-to-a-post – mm8

答えて

0

public class DirectoryButton : Button 
{ 
    public DirectoryButton(string name, string content) 
    { 
     Name = name.Replace(" ", ""); 
     //Content = new BitmapImage(new Uri("../Resources/folder-icon.png", UriKind.Relative)) + content; 
     //Content = new BitmapImage(new Uri("../Resources/folder-icon.png", UriKind.Relative)); 
     var img = new BitmapImage(new Uri("../Resources/folder-icon.png", UriKind.Relative)); 

     var sp = new UniformGrid 
     { 
      HorizontalAlignment = HorizontalAlignment.Stretch, 
      VerticalAlignment = VerticalAlignment.Stretch, 
      Columns = 3, 
      Rows = 1 
     }; 
     sp.Children.Add(new Label()); 
     sp.Children.Add(new Label { Content = content, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }); 
     sp.Children.Add(new Image { Source = img, HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center }); 
     //sp.Orientation = Orientation.Horizontal; 
     Content = sp; 
     //Content = content; 
     Margin = new Thickness(0, 5, 0, 5); 
     Height = 65; 
     Width = 350; 
     FontWeight = FontWeights.Bold; 
     Foreground = new SolidColorBrush(Colors.Black); 
     Background = new SolidColorBrush(Colors.Gray); 
     HorizontalContentAlignment = HorizontalAlignment.Stretch; //<-- 
     VerticalAlignment = VerticalAlignment.Center; 
     Visibility = Visibility.Visible; 
    } 

これは全体Buttonを埋めるためにしてImageが右になってしまいますUniformGridストレッチを行う必要があります。

0

私は上記のコメントで説明しようとしました。

ご提供いただいたコードは、われわれと同じように動作します。

3つのセルを持つUniformGridを作成し、3つのチャイルドをグリッドに追加します。 グリッドの各セルは同じサイズになります。

あなたの空のラベルは左のラベルになります。中心の次のラベル。 イメージを右のセルに追加し、HorizontalAlignment = HorizontalAlignment.Rightと設定します。これにより、右端のセル内に画像が配置されます。また、グリッドの右端にも表示されます。

UniformGridContentとしてボタンに追加しました。 次のコード行で

HorizontalContentAlignment = HorizontalAlignment.Center; 

ボタンの中にグリッドを配置します。 あなたのイメージがボタンの右端にないのはこのためです。すでに述べたように、あなたが全体のグリッドが右端に移動します

HorizontalContentAlignment = HorizontalAlignment.Right; 

とあなたのイメージを設定することができますが、これはあなたの中心にラベルも移動することも意味し、私のコメントで示唆


右の方へ。


あなたはボタンの中央内の第二Label滞在がmm8が提供するAnswerを取り、どのボタンがどのように見えるん HorizontalContentAlignment = HorizontalAlignment.Stretch;

関連する問題