विंडोज 7 में भी WPF एप्लिकेशन को मेट्रो-स्टाइल के रूप में देखते हैं? (विंडो क्रोम / थीमिंग / थीम)


123

मुझे नए ऑफिस सूट और विजुअल स्टूडियो पर विंडो क्रोम पसंद है:

यहाँ छवि विवरण दर्ज करें

मैं अभी भी विंडोज 7 के लिए एप्लिकेशन विकसित कर रहा हूं, लेकिन मैं सोच रहा हूं कि क्या इस शैली का अनुकरण करने के लिए एक त्वरित और आसान तरीका है (पढ़ें: WPF शैली या विंडोज लाइब्रेरी)। मैंने अतीत में कुछ विंडो क्रोम स्टाइलिंग की है, लेकिन इसे देखने और व्यवहार करने के लिए इसे प्राप्त करना वास्तव में मुश्किल है।

क्या किसी को पता है कि मेरे WPF अनुप्रयोगों में "आधुनिक UI" को देखने और महसूस करने के लिए मौजूदा टेम्प्लेट या लाइब्रेरी मौजूद हैं?


8
यह गाइड / नुगेट पैकेज सहायक हो सकता है: महाएप्स मेट्रो इसमें मेट्रो लुक और फील के साथ WPF Apps बनाने के लिए शैलियों और नियंत्रणों का एक सेट शामिल है।
ओलिवर वोगेल

एक पुस्तक, उपकरण, सॉफ्टवेयर लाइब्रेरी, ट्यूटोरियल या अन्य ऑफ-साइट संसाधन की सिफारिश या खोजने के लिए हमसे पूछे जाने वाले प्रश्न, स्टैक ओवरफ्लो के लिए ऑफ-टॉपिक हैं, क्योंकि वे जवाब और स्पैम को आकर्षित करते हैं। इसके बजाय, समस्या का वर्णन करें और इसे हल करने के लिए अब तक क्या किया गया है।
स्कॉट सॉल्मर

जवाबों:


149

मैंने जो किया वह अपनी खुद की विंडो और स्टाइल बना रहा था। क्योंकि मुझे हर चीज़ पर नियंत्रण रखना पसंद है और मैं नहीं चाहता था कि कुछ बाहरी लाइब्रेरीज़ सिर्फ एक विंडो का उपयोग करें। मैंने GitHub पर MahApps.Metro का पहले ही उल्लेख किया है

MahApps

और GitHub पर बहुत अच्छा आधुनिक UI भी । (.NET4.5 केवल)

आधुनिक यूआई

वहाँ एक और यह Elysium है, लेकिन मैं वास्तव में यह एक कोशिश नहीं की थी।

नन्दन

मैंने जो स्टाइल किया वह वास्तव में बहुत आसान था जब मैंने देखा कि यह कैसे किया जाता है। अब मेरे पास अपनी विंडो है और मैं xaml के साथ जो कुछ भी कर सकता हूं वह कर सकता हूं ... मेरे लिए यह मुख्य कारण है कि मैंने अपना काम क्यों किया। और मैंने आपके लिए एक और भी बनाया :) मुझे शायद यह कहना चाहिए कि मैं आधुनिक यूआई की खोज के बिना ऐसा करने में सक्षम नहीं होगा यह बहुत मददगार था। मैंने इसे VS2012 विंडो की तरह बनाने की कोशिश की। यह इस तरह दिख रहा है।

मेरी खिड़की

यहाँ कोड है (कृपया ध्यान दें कि यह .NET4.5 को लक्षित कर रहा है)

public class MyWindow : Window
{

    public MyWindow()
    {
        this.CommandBindings.Add(new CommandBinding(SystemCommands.CloseWindowCommand, this.OnCloseWindow));
        this.CommandBindings.Add(new CommandBinding(SystemCommands.MaximizeWindowCommand, this.OnMaximizeWindow, this.OnCanResizeWindow));
        this.CommandBindings.Add(new CommandBinding(SystemCommands.MinimizeWindowCommand, this.OnMinimizeWindow, this.OnCanMinimizeWindow));
        this.CommandBindings.Add(new CommandBinding(SystemCommands.RestoreWindowCommand, this.OnRestoreWindow, this.OnCanResizeWindow));
    }

    private void OnCanResizeWindow(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = this.ResizeMode == ResizeMode.CanResize || this.ResizeMode == ResizeMode.CanResizeWithGrip;
    }

    private void OnCanMinimizeWindow(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = this.ResizeMode != ResizeMode.NoResize;
    }

    private void OnCloseWindow(object target, ExecutedRoutedEventArgs e)
    {
        SystemCommands.CloseWindow(this);
    }

    private void OnMaximizeWindow(object target, ExecutedRoutedEventArgs e)
    {
        SystemCommands.MaximizeWindow(this);
    }

    private void OnMinimizeWindow(object target, ExecutedRoutedEventArgs e)
    {
        SystemCommands.MinimizeWindow(this);
    }

    private void OnRestoreWindow(object target, ExecutedRoutedEventArgs e)
    {
        SystemCommands.RestoreWindow(this);
    }
}

और यहाँ संसाधन:

<BooleanToVisibilityConverter x:Key="bool2VisibilityConverter" />

<Color x:Key="WindowBackgroundColor">#FF2D2D30</Color>
<Color x:Key="HighlightColor">#FF3F3F41</Color>
<Color x:Key="BlueColor">#FF007ACC</Color>
<Color x:Key="ForegroundColor">#FFF4F4F5</Color>

<SolidColorBrush x:Key="WindowBackgroundColorBrush" Color="{StaticResource WindowBackgroundColor}"/>
<SolidColorBrush x:Key="HighlightColorBrush" Color="{StaticResource HighlightColor}"/>
<SolidColorBrush x:Key="BlueColorBrush" Color="{StaticResource BlueColor}"/>
<SolidColorBrush x:Key="ForegroundColorBrush" Color="{StaticResource ForegroundColor}"/>

<Style x:Key="WindowButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Foreground" Value="{DynamicResource ForegroundColorBrush}" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Padding" Value="1" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid Background="{TemplateBinding Background}">
                    <ContentPresenter x:Name="contentPresenter"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                          Margin="{TemplateBinding Padding}"
                          RecognizesAccessKey="True" />
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="{StaticResource HighlightColorBrush}" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="Background" Value="{DynamicResource BlueColorBrush}" />
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="false">
                        <Setter TargetName="contentPresenter" Property="Opacity" Value=".5" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<Style x:Key="MyWindowStyle" TargetType="local:MyWindow">
    <Setter Property="Foreground" Value="{DynamicResource ForegroundColorBrush}" />
    <Setter Property="Background" Value="{DynamicResource WindowBackgroundBrush}"/>
    <Setter Property="ResizeMode" Value="CanResizeWithGrip" />
    <Setter Property="UseLayoutRounding" Value="True" />
    <Setter Property="TextOptions.TextFormattingMode" Value="Display" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:MyWindow">
                <Border x:Name="WindowBorder" Margin="{Binding Source={x:Static SystemParameters.WindowNonClientFrameThickness}}" Background="{StaticResource WindowBackgroundColorBrush}">
                    <Grid>
                        <Border BorderThickness="1">
                            <AdornerDecorator>
                                <Grid x:Name="LayoutRoot">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="25" />
                                        <RowDefinition Height="*" />
                                        <RowDefinition Height="15" />
                                    </Grid.RowDefinitions>
                                    <ContentPresenter Grid.Row="1" Grid.RowSpan="2" Margin="7"/>
                                    <Rectangle x:Name="HeaderBackground" Height="25" Fill="{DynamicResource WindowBackgroundColorBrush}" VerticalAlignment="Top" Grid.Row="0"/>
                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" WindowChrome.IsHitTestVisibleInChrome="True" Grid.Row="0">
                                        <Button Command="{Binding Source={x:Static SystemCommands.MinimizeWindowCommand}}" ToolTip="minimize" Style="{StaticResource WindowButtonStyle}">
                                            <Button.Content>
                                                <Grid Width="30" Height="25" RenderTransform="1,0,0,1,0,1">
                                                    <Path Data="M0,6 L8,6 Z" Width="8" Height="7" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                        Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="2"  />
                                                </Grid>
                                            </Button.Content>
                                        </Button>
                                        <Grid Margin="1,0,1,0">
                                            <Button x:Name="Restore" Command="{Binding Source={x:Static SystemCommands.RestoreWindowCommand}}" ToolTip="restore" Visibility="Collapsed" Style="{StaticResource WindowButtonStyle}">
                                                <Button.Content>
                                                    <Grid Width="30" Height="25" UseLayoutRounding="True" RenderTransform="1,0,0,1,.5,.5">
                                                        <Path Data="M2,0 L8,0 L8,6 M0,3 L6,3 M0,2 L6,2 L6,8 L0,8 Z" Width="8" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                            Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="1"  />
                                                    </Grid>
                                                </Button.Content>
                                            </Button>
                                            <Button x:Name="Maximize" Command="{Binding Source={x:Static SystemCommands.MaximizeWindowCommand}}" ToolTip="maximize" Style="{StaticResource WindowButtonStyle}">
                                                <Button.Content>
                                                    <Grid Width="31" Height="25">
                                                        <Path Data="M0,1 L9,1 L9,8 L0,8 Z" Width="9" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                            Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="2"  />
                                                    </Grid>
                                                </Button.Content>
                                            </Button>
                                        </Grid>
                                        <Button Command="{Binding Source={x:Static SystemCommands.CloseWindowCommand}}" ToolTip="close"  Style="{StaticResource WindowButtonStyle}">
                                            <Button.Content>
                                                <Grid Width="30" Height="25" RenderTransform="1,0,0,1,0,1">
                                                    <Path Data="M0,0 L8,7 M8,0 L0,7 Z" Width="8" Height="7" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                        Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="1.5"  />
                                                </Grid>
                                            </Button.Content>
                                        </Button>
                                    </StackPanel>
                                    <TextBlock x:Name="WindowTitleTextBlock" Grid.Row="0" Text="{TemplateBinding Title}" HorizontalAlignment="Left" TextTrimming="CharacterEllipsis" VerticalAlignment="Center"  Margin="8 -1 0 0"  FontSize="16"  Foreground="{TemplateBinding Foreground}"/>
                                    <Grid Grid.Row="2">
                                        <Path x:Name="ResizeGrip" Visibility="Collapsed" Width="12" Height="12" Margin="1" HorizontalAlignment="Right"
                                        Stroke="{StaticResource BlueColorBrush}" StrokeThickness="1" Stretch="None" Data="F1 M1,10 L3,10 M5,10 L7,10 M9,10 L11,10 M2,9 L2,11 M6,9 L6,11 M10,9 L10,11 M5,6 L7,6 M9,6 L11,6 M6,5 L6,7 M10,5 L10,7 M9,2 L11,2 M10,1 L10,3" />
                                    </Grid>
                                </Grid>
                            </AdornerDecorator>
                        </Border>
                        <Border BorderBrush="{StaticResource BlueColorBrush}" BorderThickness="1" Visibility="{Binding IsActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Converter={StaticResource bool2VisibilityConverter}}" />
                    </Grid>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="WindowState" Value="Maximized">
                        <Setter TargetName="Maximize" Property="Visibility" Value="Collapsed" />
                        <Setter TargetName="Restore" Property="Visibility" Value="Visible" />
                        <Setter TargetName="LayoutRoot" Property="Margin" Value="7" />
                    </Trigger>
                    <Trigger Property="WindowState" Value="Normal">
                        <Setter TargetName="Maximize" Property="Visibility" Value="Visible" />
                        <Setter TargetName="Restore" Property="Visibility" Value="Collapsed" />
                    </Trigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="ResizeMode" Value="CanResizeWithGrip" />
                            <Condition Property="WindowState" Value="Normal" />
                        </MultiTrigger.Conditions>
                        <Setter TargetName="ResizeGrip" Property="Visibility" Value="Visible" />
                    </MultiTrigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="WindowChrome.WindowChrome">
        <Setter.Value>
            <WindowChrome CornerRadius="0" GlassFrameThickness="1" UseAeroCaptionButtons="False" />
        </Setter.Value>
    </Setter>
</Style>

1
हाय और आप इस महान कोड आप पोस्ट के लिए बहुत बहुत धन्यवाद। बस पूछने के लिए एक एहसान, क्या खिड़की पर छाया होना संभव है? केवल एक चीज जो मुझे समझ में आ रही है वह बदल रही GlassFrameThicknessहै 1। लेकिन छाया बहुत मजबूत और अंधेरा है। मैं इसे कैसे बदल सकता हूं यह वजन और अस्पष्टता है?
xperator


MahApps का उपयोग करने के बजाय, घटकों का अपना अनुकूलन बनाना बहुत मुश्किल है?
मैथ्यूस सारावा

Fantastico! इस उत्कृष्ट योगदान के लिए बहुत-बहुत धन्यवाद, मैंने कई बार एक ही काम करने की कोशिश की थी लेकिन मुझे कभी भी ऐसा सही परिणाम नहीं मिला।
लेओदेव

मान लीजिए कि मैं शीर्ष पर नीली सीमा की मोटाई बढ़ाना चाहता हूं, और अन्य सभी पक्षों पर सीमा हटा दें (जैसे आपके उत्तर में एलीसियम चित्र), मुझे क्या बदलना होगा? मैं wpf के लिए नया हूँ, और इसलिए प्रश्न
mrid

49

मेरे द्वारा चुना गया समाधान MahApps.Metro ( github ) था, जिसे (अब सॉफ्टवेयर के दो टुकड़ों पर उपयोग करने के बाद) मैं एक उत्कृष्ट UI किट ( सुझाव के लिए ओलिवर वोगेल को क्रेडिट ) मानता हूं ।

खिड़की की शैली

यह बहुत कम प्रयास के साथ एप्लिकेशन को बंद कर देता है, और इसमें मानक विंडोज 8 नियंत्रण का अनुकूलन होता है। यह बहुत मजबूत है।

पाठ बॉक्स वॉटरमार्क

Nuget पर एक संस्करण उपलब्ध है:

आप GUI का उपयोग करके Nuget के माध्यम से MahApps.Metro स्थापित कर सकते हैं (अपनी परियोजना पर राइट क्लिक करें, Nuget संदर्भ प्रबंधित करें, 'MahApps.Metro' खोजें) या कंसोल के माध्यम से:

PM> इंस्टॉल-पैकेज MahApps.Metro

यह मुफ़्त भी है - व्यावसायिक उपयोग के लिए भी।

अपडेट 10-29-2013:

मुझे पता चला कि MahApps.Metro का Github संस्करण उन नियंत्रणों और शैलियों से भरा है जो वर्तमान नगेट संस्करण में उपलब्ध नहीं हैं, जिनमें शामिल हैं:

datagrids:

यहाँ छवि विवरण दर्ज करें

साफ खिड़की:

यहाँ छवि विवरण दर्ज करें

Flyouts:

यहाँ छवि विवरण दर्ज करें

टाइल्स:

यहाँ छवि विवरण दर्ज करें

जीथब रिपॉजिटरी काफी उपयोगकर्ता योगदान के साथ बहुत सक्रिय है। मैं इसे जांचने की सलाह देता हूं।


मैं इसका परीक्षण करता हूं, अच्छा +1 :)
अकरम

3
बहुत अच्छा अद्यतन! मैं MahApps.Metro को भी आज़माता हूँ, WPF और Elysium के लिए मॉडर्न UI। मैंने पाया कि Elysium अपनी वेबसाइट / Doc पर उपयोग करने और भ्रमित करने के लिए बहुत जटिल है। आधुनिक UI और MahApps। Metro हल्के वजन और उपयोग में आसान है, लेकिन MahApps। WPF फॉर्म नियंत्रण पर मेट्रो अधिक प्रतिस्पर्धी है।
च्यूंग

MahApps का उपयोग करने के बजाय, घटकों का अपना अनुकूलन बनाना बहुत मुश्किल है?
मैथ्यूस सारावा

42

मैं WPF के लिए आधुनिक UI की सिफारिश करूंगा ।

यह एक बहुत ही सक्रिय अनुचर है यह भयानक और मुफ्त है!

WPF के लिए आधुनिक UI (नमूना एप्लिकेशन का स्क्रीनशॉट)

मैं वर्तमान में MUI को कुछ प्रोजेक्ट्स पोर्ट कर रहा हूं, पहला (और इस बीच दूसरा) इंप्रेशन सिर्फ वाह है!

MUI को एक्शन में देखने के लिए आप XAML Spy डाउनलोड कर सकते हैं जो MUI पर आधारित है।

संपादित करें: कुछ महीनों के लिए WPF के लिए आधुनिक UI का उपयोग करना और मुझे यह पसंद है!


16

उपरोक्त स्रोत के साथ विक्टर ला क्रॉइक्स उत्तर के आधार पर , मैं इसे निम्नलिखित का उपयोग करने के लिए बदलूंगा:

Marlett फ़ॉन्ट उदाहरण

न्यूनतम, पुनर्स्थापना / अधिकतम करें और बंद करें बटन के लिए पथ डेटा बिंदुओं के बजाय मार्लेट फ़ॉन्ट का उपयोग करना बेहतर अभ्यास है।

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" WindowChrome.IsHitTestVisibleInChrome="True" Grid.Row="0">
<Button Command="{Binding Source={x:Static SystemCommands.MinimizeWindowCommand}}" ToolTip="minimize" Style="{StaticResource WindowButtonStyle}">
    <Button.Content>
        <Grid Width="30" Height="25">
            <TextBlock Text="0" FontFamily="Marlett" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="3.5,0,0,3" />
        </Grid>
    </Button.Content>
</Button>
<Grid Margin="1,0,1,0">
    <Button x:Name="Restore" Command="{Binding Source={x:Static SystemCommands.RestoreWindowCommand}}" ToolTip="restore" Visibility="Collapsed" Style="{StaticResource WindowButtonStyle}">
        <Button.Content>
            <Grid Width="30" Height="25" UseLayoutRounding="True">
                <TextBlock Text="2" FontFamily="Marlett" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="2,0,0,1" />
            </Grid>
        </Button.Content>
    </Button>
    <Button x:Name="Maximize" Command="{Binding Source={x:Static SystemCommands.MaximizeWindowCommand}}" ToolTip="maximize" Style="{StaticResource WindowButtonStyle}">
        <Button.Content>
            <Grid Width="31" Height="25">
                <TextBlock Text="1" FontFamily="Marlett" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="2,0,0,1" />
            </Grid>
        </Button.Content>
    </Button>
</Grid>
<Button Command="{Binding Source={x:Static SystemCommands.CloseWindowCommand}}" ToolTip="close"  Style="{StaticResource WindowButtonStyle}">
    <Button.Content>
        <Grid Width="30" Height="25">
            <TextBlock Text="r" FontFamily="Marlett" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="0,0,0,1" />
        </Grid>
    </Button.Content>
</Button>


हाय फ्लाइंग मनमौजी। क्या आप यह बता पाएंगे कि मार्लेट फ़ॉन्ट का उपयोग करना बेहतर अभ्यास क्यों है? मेरे पास तीन अलग-अलग कार्यान्वयन हैं, और मुझे यकीन नहीं है कि किसका उपयोग करना है। पहला पथ डेटा बिंदुओं का उपयोग कर रहा है, दूसरा मार्लेट का उपयोग कर रहा है और तीसरा एसवीजी प्रारूप में बटन का एक मनोरंजन है। मैं इस परियोजना में 100% सर्वोत्तम प्रथाओं का उपयोग करने की कोशिश कर रहा हूं और यह सुनिश्चित नहीं कर रहा हूं कि कौन सा सबसे अच्छा विकल्प है। क्या आप बता सकते हैं कि बेहतर क्यों है?
user1632018

1
हाय user1632018 यदि आप Winform या WPF में एक कस्टम क्रोम विंडो बनाना चाहते हैं, तो आपको अपने सिस्टम पर उपलब्ध 'Marlett' फ़ॉन्ट पर एक नज़र डालनी चाहिए। इस फॉन्ट में विंडोज में मिनिमाइज़, मैक्सिमम, रिस्टोर और क्लोज बटन के लिए वास्तविक ग्लिफ़ का इस्तेमाल किया गया है। इस फ़ॉन्ट का उपयोग करने से कस्टम क्रोम विंडो में इन ग्लिफ़ का पुनः उपयोग करना वास्तव में आसान हो जाता है, इसके बजाय आमतौर पर उपयोग की जाने वाली कस्टम छवियों के बजाय। आप विंडोज चरित्र मानचित्र में Marlett फ़ॉन्ट या अधिक जानकारी के लिए निम्न लिंक देख सकते हैं: microsoft.com/typography/fonts/font.aspx?FMID=1264 आशा है कि यह मदद करता है।
फ्लाइंगमावरिक

2

यदि आप भुगतान करने को तैयार हैं, तो मैं दृढ़ता से आपको WPF के लिए Telerik Components की सलाह देता हूं । वे महान शैलियों / विषयों की पेशकश करते हैं और दोनों के लिए विशिष्ट विषय हैं, Office 2013 और विंडोज 8 (EDIT: और यह भी एक दृश्य स्टूडियो 2013 थीम शैली)। हालाँकि, वास्तव में शैलियों की तुलना में बहुत अधिक पेशकश करने से आपको नियंत्रणों का एक पूरा गुच्छा मिलेगा जो वास्तव में उपयोगी हैं।

यहां बताया गया है कि यह कार्रवाई में कैसे दिखता है (स्क्रीनशॉट टेलेरिक नमूनों से लिया गया है):

टेलरिक डैशबोर्ड नमूना

टेलरिक सीआरएम डैशबोर्ड नमूना

यहां टेलीरिक एक्जीक्यूटिव डैशबोर्ड सैंपल (पहले स्क्रीनशॉट) के लिंक दिए गए हैं और यहां CRM डैशबोर्ड (दूसरा स्क्रीनशॉट) के लिए दिया गया है।

वे 30 दिन का मुकदमा पेश करते हैं, बस इसे एक शॉट देते हैं


0

वैकल्पिक चमक के साथ इस WPF मेट्रो स्टाइल खिड़की पर एक नज़र डालें ।

यह एक स्टैंड-अलोन एप्लीकेशन है जिसमें Microsoft.windows.Shell (शामिल) की तुलना में कोई अन्य लाइब्रेरी का उपयोग नहीं किया गया है ताकि वैकल्पिक चमक सीमाओं के साथ मेट्रो स्टाइल वाली खिड़कियां बनाई जा सकें।

XP (.NET4) पर सभी तरह से विंडोज का समर्थन करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.