Canon обеспечивает драйверы, которые печатают дуплекс на серии MG5300 на азиатских серверах.
Их рекомендуемый метод установки перестал работать, но иначе доступен.
то, Как сделать это, детализировано в в другом ответ вопросов.
Создайте класс выбора стиля:
namespace WpfApplication1
{
public class DebugReleaseStylePicker
{
#if DEBUG
internal static readonly bool debug = true;
#else
internal static readonly bool debug=false;
#endif
public Style ReleaseStyle
{
get; set;
}
public Style DebugStyle
{
get; set;
}
public Style CurrentStyle
{
get
{
return debug ? DebugStyle : ReleaseStyle;
}
}
}
}
в вашем App.xaml добавьте в свое приложение. Resources ваш стиль отладки и выпуска + экземпляр StylePicker и установите ReleaseStyle и DebugStyle на предыдущие установленные стили:
<Application.Resources>
<Style x:Key="WindowDebugStyle">
<Setter Property="Window.Background" Value="Red"></Setter>
</Style>
<Style x:Key="WindowReleaseStyle">
<Setter Property="Window.Background" Value="Blue"></Setter>
</Style>
<WpfApplication1:DebugReleaseStylePicker x:Key="stylePicker"
ReleaseStyle="{StaticResource WindowReleaseStyle}"
DebugStyle="{StaticResource WindowDebugStyle}"/>
</Application.Resources>
В разметке Window настройте WindowStyle следующим образом:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
Style="{Binding Source={StaticResource stylePicker}, Path=CurrentStyle}">
..
</Window>
Вы можете повторно использовать DebugReleaseStylePicker, чтобы установить стиль для любого другого элемента управления, а не только для окна.
Это может быть сложно сделать в XAML, но в реальном коде вы можете просто сделать что-то вроде:
#if DEBUG
window.Style = WindowStyles.Regular;
#endif
Почему бы не поместить это где-нибудь, что будет выполняться после того, как будет выполнен нормальный код XAML казнен?
вы можете выполнять условную компиляцию в файле XAML, а также в коде. ознакомьтесь с этой статьей
в основном, вы делаете это в своем Properties \ AssemblyInfo.cs:
#if BETA
[assembly:XmlnsDefinition("BetaVersion", "Example.Technology")]
#endif
добавьте свои xmlns в файл * .XAML:
xmlns:beta="BetaVersion"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
теперь вы можете сделать следующее:
<mc:Choice Requires="beta">
<Label>
This is ALPHA software. Confidential.
Internal use only. Do not distribute
<Label>
</mc:Choice>
в качестве примечания, это, вероятно, не будет работать с silverlight - AFIK сборка : XmlnsDefinition
не поддерживается
Вы можете создать расширение разметки вроде этого:
public class DebugStyleExtension : MarkupExtension
{
public object DebugResourceKey { get; set; }
public object ReleaseResourceKey { get; set; }
public object ProvideValue(IServiceProvider provider)
{
#if DEBUG
return Application.Current.FindResource(DebugResourceKey) as Style;
#else
return Application.Current.FindResource(ReleaseResourceKey) as Style
#endif
}
}
вы бы использовали его так:
<Window ...
xmlns:my="clr-namespace:MyNamespace"
Style="{my:DebugStyle DebugResourceKey=DebugStyle, ReleaseResourceKey=NormalStyle}">
Не могли бы вы использовать #if DEBUG, чтобы установить для свойства другое значение и привязать к нему?
Может быть
#if DEBUG
style = 0;
#else
style = 1;
#endif
(Имейте в виду, что у меня здесь нет VS). и используйте преобразователь значений.
Множество полезных ответов ... Я подумал о другой идее, которую я хотел бы выбросить там: преобразователь значений плюс привязка:
Вот преобразователь значений:
public class WindowToWindowStyle : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var window = (Window)value;
var style = (Style)window.FindResource("Window_FixedStyle");
#if DEBUG
style = (Style)window.FindResource("Window_Style");
#endif
return style;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
Вот мое объявление Window:
<Window
...
xmlns:local="clr-namespace:MyProj"
Style="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource ValueConverter_WindowToWindowStyle}}"
WindowStartupLocation="CenterScreen">
<Window.Resources>
<local:WindowToWindowStyle
x:Key="ValueConverter_WindowToWindowStyle" />
</Window.Resources>
...
</Window>
Что это делает:
Итак, здесь происходит то, что я передаю ссылку на Window в преобразователь значений и возвращает соответствующий стиль.