Click here to Skip to main content
15,894,825 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi guys I need help urgently. I have a variable _Reprint which is set to true or false in my class Print constructor in a project called Printing. Then i have a printscreen view in another project called Controls. I want to set textboxes on this screen to visible if the _Reprint = false. How do i do this in xaml? I know it's to do with triggers but i can't seem to get it right. Both projects are contained in one big project called PrintingExpo. Hope my question is clear enough. Thanks in advance
Posted

First of you must have a property which is either a DependencyProperty or normal property which utilizes INotifyPropertyChanged.

Second only use a trigger if you're already working with a Style, that is do not create a Style for a control for the sole purpose of adding triggers. If you do not already have a Style for some other purpose, then bind the Visibility property of your TextBoxes and use the BooleanToVisibilityConveter .
 
Share this answer
 
Comments
Ace_Hardlight 18-Oct-11 15:21pm    
Ok but how does the BooleanToVisibiltyConverter work?
Simon Bang Terkildsen 18-Oct-11 15:30pm    
see WPF Tutorial - Binding Converters
BooleanToVisibilityConverter already exists so you don't have to create it yourself
[no name] 18-Oct-11 15:36pm    
+5You are completly right about not using the trigger. Nice catch!
Ace_Hardlight 18-Oct-11 15:38pm    
Thank you so much :D used the article and now it works !! Thanks everyone that posted solutions. Appreciate it very much
Espen Harlinn 18-Oct-11 19:19pm    
Excellent :)
For this you would use DataTriggers.

XAML
<style>
   <datatrigger binding="{Binding Path=Reprint}">
        <setter property="Visibility" value="Visible" />
   </datatrigger>
</style>


Also, your "Reprint" property needs to be public.
 
Share this answer
 
Comments
Simon Bang Terkildsen 18-Oct-11 15:19pm    
A 4, it's important that the Reprint property actually notifies about changes. I've mentioned that in my solution.
[no name] 18-Oct-11 15:33pm    
Good point. My brain must not be in the game today ;)
Simon Bang Terkildsen 18-Oct-11 15:39pm    
hehe, happens to all of us now and then :)
Ace_Hardlight 18-Oct-11 15:19pm    
This is what i have got but it doesn't work at all

<textbox grid.row="6" verticalalignment="Center"
="" name="txtDocNo" text="Doc No: " margin="3,61,610,46" grid.columnspan="2" grid.rowspan="2">
<textbox.style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<datatrigger binding="{Binding Path= _Reprint}" value="False">
<setter property="Visibility" value="Visible">

</Style.Triggers>
</Style>

[no name] 18-Oct-11 15:34pm    
What you have posted is an empty collection of triggers. They will not do anything. Try the data trigger that I posted.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900