2009-04-05 2 views
1

私がウェブページで作業したとき、私はこれらをたくさん使っていました。先日、WPFプロジェクトのためにページを構築しているうちに、ページ内にダイアログがあるように見えるページを作成しましたが、ページ上の唯一のものでした。wpfページ内ダイアログ

私の質問はこちらです。これらの種類のダイアログを簡単に作成できるようなコンポーネントが作成されていますか。

+0

私はいくつかの場所で自分自身を開発しました。これはもっと一貫した方法でこれを行うためのリソースがあるはずです。私が何かを見つけたら報告します。 – jpierson

答えて

0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.ComponentModel; 

namespace xxx.Wpf 
{ 
    /// <summary> 
    /// Interaction logic for InPageDialog.xaml 
    /// </summary> 
    public partial class InPageDialog : UserControl, INotifyPropertyChanged 
    { 
     public InPageDialog() 
     { 
      InitializeComponent(); 
     } 
     public void Show(IDialog ucContent) 
     {       
     } 

     void ucContent_OnClose(object obj) 
     { 

     } 
     protected virtual void Changed(string propertyName) 
     { 
      PropertyChangedEventHandler handler = PropertyChanged; 
      if (handler != null) 
      { 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 

     public static readonly DependencyProperty ContentBackgroundProperty = DependencyProperty.Register("ContentBackground", typeof(Brush), typeof(InPageDialog), new UIPropertyMetadata(Brushes.White)); 
     public Brush ContentBackground 
     { 
      get { return (Brush)GetValue(ContentBackgroundProperty); } 
      set { SetValue(ContentBackgroundProperty, value); } 
     } 

     public static readonly DependencyProperty ContentBorderBrushProperty = DependencyProperty.Register("ContentBorderBrush", typeof(Brush), typeof(InPageDialog), new UIPropertyMetadata(Brushes.White)); 
     public Brush ContentBorderBrush 
     { 
      get { return (Brush)GetValue(ContentBorderBrushProperty); } 
      set { SetValue(ContentBorderBrushProperty, value); } 
     } 

     public static readonly DependencyProperty ContentActiveBackgroundProperty = DependencyProperty.Register("ContentActiveBackground", typeof(Brush), typeof(InPageDialog), new UIPropertyMetadata(Brushes.White)); 
     public Brush ContentActiveBackground 
     { 
      get { return (Brush)GetValue(ContentActiveBackgroundProperty); } 
      set { SetValue(ContentActiveBackgroundProperty, value); } 
     } 

     public static readonly DependencyProperty ContentBorderThicknessProperty = DependencyProperty.Register("ContentBorderThickness", typeof(Thickness), typeof(InPageDialog)); 
     public Thickness ContentBorderThickness 
     { 
      get { return (Thickness)GetValue(ContentBorderThicknessProperty); } 
      set { SetValue(ContentBorderThicknessProperty, value); } 
     } 

     public static readonly DependencyProperty ContentBlurRadiusProperty = DependencyProperty.Register("ContentBlurRadius", typeof(double), typeof(InPageDialog)); 
     public double ContentBlurRadius 
     { 
      get { return (double)GetValue(ContentBlurRadiusProperty); } 
      set { SetValue(ContentBlurRadiusProperty, value); } 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 
    } 

    public interface IDialog 
    { 
     event Action<object> OnClose; 
    } 
} 

    <UserControl x:Class="xxx.Wpf.InPageDialog" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:me="clr-namespace:xxx.Wpf" 
    Visibility="Collapsed" DataContext="{Binding}"> 
    <UserControl.Resources> 
     <Style TargetType="{x:Type Button}"> 
      <Setter Property="Margin" Value="4"/> 
      <Setter Property="Width" Value="60"/> 
     </Style> 
    </UserControl.Resources> 
    <UserControl.Template> 
     <ControlTemplate TargetType="{x:Type me:InPageDialog}"> 
     <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" DataContext="{TemplateBinding DataContext}"> 
      <Rectangle HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         Opacity="0.765" 
         Fill="{TemplateBinding ContentBackground}" /> 

      <Border VerticalAlignment="Center" 
        HorizontalAlignment="Center" 
        CornerRadius="5" 
        BorderBrush="{TemplateBinding ContentBorderBrush}" 
        BorderThickness="{TemplateBinding ContentBorderThickness}" 
        Background="{TemplateBinding ContentActiveBackground}" > 
       <ContentPresenter Margin="0" Width="Auto" Height="Auto" Content="{TemplateBinding Content}" /> 
      </Border> 

     </Grid> 
     </ControlTemplate> 
    </UserControl.Template> 
</UserControl> 

私たちの仕事では何をしているのですか?

関連する問題