Хорошая тема, особенно при работе с некоторыми MVVM, тот факт, что пользовательские элементы управления отображаются на белом фоне, когда они прозрачные, очень раздражает.
Я уверен, что вы могли бы сделать это в Blend с состоянием, определяемым на основе того, работает ли дизайнер, но я не думаю, что это уменьшит объем работы.
Все еще не знаете, как избежать кода в коде и , избегая необходимости открывать blend, поэтому, если у кого-то есть предложения, заранее спасибо за публикацию.* Я бы предложил использовать Opacity
<my:MyUserControl Background="Transparent" ...>
Это не работает, так как это сделает любые дочерние элементы управления внутри usercontrol невидимыми во время выполнения.
Один из вариантов - присвоить UserControl цвет фона, а затем переопределить его там, где вы его используете.
Вы пытались установить фон в UserControl?Не уверен, почему, но для меня это не работает.
Что работает, так это установить фон содержимого, например,
<UserControl x:Class="...">
<StackPanel Background="{StaticResource PhoneChromeBrush}">
...
, а затем поместить следующий код в конструктор представления
public View() {
InitializeComponent();
var c = Content as Panel;
if (c != null) c.Background = new SolidColorBrush(Colors.Transparent);
}