Winforms'da diyebilirsiniz
if ( DesignMode )
{
// Do something that only happens on Design mode
}
WPF'de buna benzer bir şey var mı?
Yanıtlar:
Gerçekten de var :
System.ComponentModel.DesignerProperties.GetIsInDesignMode
Misal:
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
public class MyUserControl : UserControl
{
public MyUserControl()
{
if (DesignerProperties.GetIsInDesignMode(this))
{
// Design-mode specific functionality
}
}
}
Enable project codeetkinleştirilmelidir (veya Menü-> Tasarım-> 🗹 Proje Kodunu Çalıştır).
Bazı durumlarda, UI olmayan sınıfıma yapılan bir çağrının tasarımcı tarafından başlatılıp başlatılmadığını bilmem gerekir (örneğin, XAML'den bir DataContext sınıfı oluşturursam). O zaman bu MSDN makalesindeki yaklaşım faydalıdır:
// Check for design mode.
if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue))
{
//in Design mode
}
Herhangi bir WPF Kontrolleri için WinForms barındırılan , DesignerProperties.GetIsInDesignMode(this)çalışma yapmaz.
Bu yüzden, Microsoft Connect'te bir hata oluşturdum ve bir geçici çözüm ekledim:
public static bool IsInDesignMode()
{
if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Contains( "VisualStudio" ) )
{
return true;
}
return false;
}
GetEntryAssembly()yerine olması gerekmiyor GetExecutingAssembly()mu? İkincisi, bu özelliğin tanımlandığı derlemeyi iade etmelidir
Geç cevap, biliyorum - ama bunu DataTriggergenel olarak XAML içinde veya herhangi bir yerde kullanmak isteyen herkes için :
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=PresentationFramework"
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},
Path=(componentModel:DesignerProperties.IsInDesignMode)}"
Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
Bunu kullan:
if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
//design only code here
}
(Zaman uyumsuz ve Dosya işlemleri burada çalışmayacak)
Ayrıca, XAML'de bir tasarım zamanı nesnesini başlatmak için (d, özel tasarımcı ad alanıdır)
<Grid d:DataContext="{d:DesignInstance Type=local:MyViewModel, IsDesignTimeCreatable=True}">
...
</Grid>
Windows.ApplicationModel), Windows Runtime API'ye dahil olan Mağaza uygulamaları içindir. Yalnızca normal bir Windows masaüstü uygulaması üzerinde çalışıyorsanız, bu kullanıma hazır bir WPF çözümü değildir.