Boolean değerine bağlı olarak rengi değiştirmek istediğim bir ilerleme çubuğu var; doğru yeşil ve yanlış kırmızıdır. Çalışması gerektiği gibi görünen bir kodum var (bunu bir metin kutusuna bağladığımda doğru değeri döndürür), ancak ilerleme çubuğunun renk özelliği değil.IValueConverter SolidColorBrush için çalışmıyor
public class ProgressBarConverter : System.Windows.Data.IValueConverter
{
public object Convert(
object o,
Type type,
object parameter,
System.Globalization.CultureInfo culture)
{
if (o == null)
return null;
else
//return (bool)o ? new SolidColorBrush(Colors.Red) :
// new SolidColorBrush(Colors.Green);
return (bool)o ? Colors.Red : Colors.Green;
}
public object ConvertBack(
object o,
Type type,
object parameter,
System.Globalization.CultureInfo culture)
{
return null;
}
}
(global kaynak yüzden olabilir) Sonra App.xaml aşağıdakileri ekleyin: (Ben her yere erişmek istediğiniz beri App.xaml.cs olarak) dönüştürücü bu gibi tanımlanır
verileri tutmak ve liste kutusu bağlamak için bir sınıfını tanımlamak, MainPage.xaml.cs sonra<Grid x:Name="LayoutRoot" Background="Transparent">
<ListBox x:Name="listBox"
ItemTemplate="{StaticResource ItemTemplate}"/>
</Grid>
ve:
<Application.Resources>
<local:ProgressBarConverter x:Key="progressBarConverter" />
<DataTemplate x:Key="ItemTemplate">
<StackPanel>
<TextBlock Text="{Binding name}" Width="280" />
<TextBlock Text="{Binding isNeeded,
Converter={StaticResource progressBarConverter}}" />
<ProgressBar>
<ProgressBar.Foreground>
<SolidColorBrush Color="{Binding isNeeded,
Converter={StaticResource progressBarConverter}}" />
</ProgressBar.Foreground>
<ProgressBar.Background>
<SolidColorBrush Color="{StaticResource PhoneBorderColor}"/>
</ProgressBar.Background>
</ProgressBar>
</StackPanel>
</DataTemplate>
</Application.Resources>
I görüntülemek için MainPage.xaml için aşağıdaki ilave
namespace PhoneApp1
{
public class TestClass
{
public bool isNeeded { get; set; }
public string name { get; set; }
}
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
var list = new LinkedList<TestClass>();
list.AddFirst(
new TestClass {
isNeeded = true, name = "should be green" });
list.AddFirst(
new TestClass {
isNeeded = false, name = "should be red" });
listBox.ItemsSource = list;
}
}
}
minimal working example ekledim, böylece yalnızca oluşturulabilir ve test edilebilir. çıktının bir görüntü buradadır:
Bu metin kutusu için dönüştürücü ancak ilerleme çubuğu değerleri döndürür. Hata ayıklayıcısını çalıştırdığımda, buna çağrı bile yapmıyor.
Yardımlarınız için teşekkürler!
Dönüştürücünüz bir solidColorBrush döndürürse ve bunu doğrudan ProgressBar'ınızın ForeGround Özelliği'ne bağlarsanız işe yaramaz mı? – BigL
Vay - bu işe yaradı. Hala xaml'ın asılmasını alıyorum, o yüzden denediğim bir şey değil. Bunu bir cevap olarak kabul ederseniz kabul edeceğim. Önerin için teşekkürler! –
@TaylorSouthwick Bir cevap olarak yayınladı. Yardım edebileceğime sevindim. :) – BigL